Skip to content
HNarzędzia
en
Categories

Text

Accents in file names and URLs: when é, ü, ø and ł cause trouble and how to remove them

A file called Müller.pdf or Łódź.pdf usually opens fine on your own computer. Trouble starts when the name travels through an archive, another operating system, a form or a URL. Find out which of those applies to you, then clean a whole list of names at once.

Accented letters in file names are fine on most current systems. They fail at the seams: a ZIP archive opened with an older program, a file moved between a Mac and another system, a form whose field takes only plain ASCII, a web address pasted into a chat. A different mechanism breaks in each place, so work out which one affects you first. If none of the rows below matches how your files travel, you can leave the accents alone.

Where accents really break things

Situation What happens What decides it
ZIP archive opened with an older program File names show up as random characters The name encoding stored in the archive
A file from a Mac opened or compared elsewhere The same name has two different spellings (NFC and NFD) Unicode normalization
A form, accounting or banking system with an ASCII-only field The file is rejected or the name is mangled The specific system
A web address You see %C3%BC where “ü” should be Percent-encoding (UTF-8)

ZIP and name encoding

The ZIP format specification (PKWARE APPNOTE 6.3.10, appendix D, checked in October 2026) says ZIP has historically stored file names in IBM Code Page 437. A name is UTF-8 only when general purpose bit 11 (the EFS flag) is set. Without that flag, the name should stay within Code Page 437, the original MS-DOS character set, and programs handle everything outside it in different ways. So a name with “ł” written by one tool can turn into garbage in another. An archive whose names are plain ASCII does not have this problem.

NFC and NFD on a Mac

Unicode often has two spellings for the same letter. “é” can be one character (U+00E9, form NFC) or “e” followed by a combining accent (U+0065 and U+0301, form NFD). The rules are in Unicode Standard Annex #15. On a Mac this matters because of the file system’s history. Apple’s HFS Plus documentation (TN1150) says HFS Plus stores names fully decomposed, and uses exactly this “é” example. The APFS reference for Apple’s current file system describes names as normalization-insensitive: for comparison, the name is decomposed to NFD. We tested this on APFS on our own Mac. A file saved as “zażółć.txt” in NFC came back from the directory listing in NFC, and looking it up by the NFD spelling also found it. Within one Mac nothing breaks. The difference shows up when a name reaches a program or system that compares strings without normalizing them.

Node.js shows what this means for letters in several languages:

'é'.normalize('NFD').length; // 2 (e + U+0301)
'ü'.normalize('NFD').length; // 2 (u + U+0308)
'ł'.normalize('NFD').length; // 1 (U+0142, unchanged)
'ø'.normalize('NFD').length; // 1 (U+00F8, unchanged)
'zażółć'.normalize('NFC') === 'zażółć'.normalize('NFD'); // false
'zażółć'.normalize('NFC').length; // 6
'zażółć'.normalize('NFD').length; // 9

Two names that look identical can be different strings. A program that compares characters without normalizing may fail to find a file whose name is stored in the other form. The Polish “ł” and the Scandinavian “ø” have no decomposition (no base letter plus a combining mark), so they look the same in both forms. They are also the letters that the usual “normalize, then drop the combining marks” trick leaves behind.

Forms and older systems

Some forms, accounting systems and banking systems accept only ASCII in their fields or mangle everything else. There is no general rule and no common source for it, because it depends on the system. If a form rejects a file with no explanation and the name has accents, removing them is the cheapest thing to try.

URLs: what %C3%BC means and what Google says

An address can contain only some characters directly. The rest are percent-encoded: a character becomes its UTF-8 bytes, each written as % and two hexadecimal digits. In JavaScript encodeURIComponent does this (MDN). Output from Node:

encodeURIComponent('zażółć gęślą jaźń');
// "za%C5%BC%C3%B3%C5%82%C4%87%20g%C4%99%C5%9Bl%C4%85%20ja%C5%BA%C5%84"

encodeURIComponent('ł'); // "%C5%82"
encodeURIComponent('ą'); // "%C4%85"
encodeURIComponent('ą'.normalize('NFD')); // "a%CC%A8"

`https://example.com/files/${encodeURIComponent('Łódź plan.pdf')}`;
// "https://example.com/files/%C5%81%C3%B3d%C5%BA%20plan.pdf"

The two expressions with “ą” show what NFC and NFD do in an address: the NFC form is %C4%85 and the NFD form is a%CC%A8, two different addresses for the same name. An encoded address is valid but hard to read in a message: each of these Polish letters takes six characters instead of one.

Does Google require ASCII in URLs? No. Google Search Central’s guide to URL structure (page last updated 10 December 2025, checked in October 2026) tells you to use words in your audience’s language, and its example is the German address gemüse. When you link to your own pages, it advises percent-encoding in the href attribute, for example gem%C3%BCse. It also recommends hyphens over underscores and notes that Google Search treats URLs as case sensitive, so consistent lowercase is safer. Nothing on that page says accents hurt rankings. You choose an address without accents for readability and easy copying, not because a search engine demands it. If you already have working addresses with accents, do not change them without redirects.

How to remove accents: two tools, two jobs

Remove accents and Polish characters is for file names and plain text. The slug generator builds a piece of a web address. Both run in your browser, and the text you paste is not sent to a server.

The remove-accents tool has a table in its code for the nine Polish letters, upper and lower case (18 characters in all): ą to a, ć to c, ł to l, ż to z. The letter “ł” has its own entry because normalization alone does not touch it. We checked in Node: decomposing “zażółć gęślą jaźń” to NFD and stripping the combining marks gives “zazołc gesla jazn”, with the “ł” still there. The tool gives “zazolc gesla jazn”.

The option “Remove all accents and diacritics (é, ü, ß, ø, č…)” sets the scope. In the English version of the tool it is on by default. It removes the combining marks from every letter that has them (é to e, ü to u) and uses a table for letters that do not decompose: ß becomes ss, ø becomes o, æ becomes ae, đ becomes d. Switch it off to replace only the Polish letters and keep é, ü and the rest. Spaces, digits, punctuation, letter case and the file extension stay as they are, and a counter under the result shows how many characters were replaced. The tool also handles decomposed (NFD) names like the ones HFS Plus stores: Zażółć gęślą jaźń.txt in NFD form (29 characters), pasted with only Polish letters replaced, came out as Zazolc gesla jazn.txt.

The slug generator does more because it assumes a web address. By default it lowercases everything, joins words with hyphens and drops anything that is not a letter or a digit. It turns & into “and” in the English version (the Polish version of the tool uses “i”). Apostrophes and quotation marks disappear without a trace. Options: separator (hyphen, underscore or dot), lowercase, removal of stop words (a, the, of, and, and Polish ones such as i, w, z), and a maximum length. “One slug per line” turns a list of titles into a list of slugs.

Example: eight file names through both tools

The list has fictional names generated by a script: Polish text, names from other languages, and one plain name as a control. We read the results from the tools in the browser (Chromium driven by Playwright).

File name Polish letters only All accents Slug
Zażółć gęślą jaźń.txt Zazolc gesla jazn.txt Zazolc gesla jazn.txt zazolc-gesla-jazn-txt
Łódź Śródmieście plan.pdf Lodz Srodmiescie plan.pdf Lodz Srodmiescie plan.pdf lodz-srodmiescie-plan-pdf
Faktura nr 10-2026 Wałęsa & Synowie.pdf Faktura nr 10-2026 Walesa & Synowie.pdf Faktura nr 10-2026 Walesa & Synowie.pdf faktura-nr-10-2026-walesa-and-synowie-pdf
Müller Straße Øresund.docx unchanged Muller Strasse Oresund.docx muller-strasse-oresund-docx
Crème brûlée São Paulo.jpg unchanged Creme brulee Sao Paulo.jpg creme-brulee-sao-paulo-jpg
Čapek Český Krumlov.png unchanged Capek Cesky Krumlov.png capek-cesky-krumlov-png
ŁÓDŹ ŻÓŁW.TXT LODZ ZOLW.TXT LODZ ZOLW.TXT lodz-zolw-txt
raport_roczny.v2.pdf unchanged unchanged raport-roczny-v2-pdf

The counter under the result showed 23 replaced characters with the Polish-only setting and 33 with all accents on. In the screenshot the English default is on, so it reads 33. Paste the whole list into the left box and copy the result from the right.

The Remove accents tool with a list of eight file names: the right box shows the names without accents, the all-accents switch is on and the counter reads “Characters replaced: 33”

Three things follow from the table.

A slug is not a file name. It turns the dot before the extension into a hyphen, so plan.pdf becomes plan-pdf, and raport_roczny.v2.pdf loses its extension, its dot and its underscore. Use the remove-accents tool for file names. A slug is for part of a web address, where an extension is usually absent.

Two different names can collapse into one after accents are removed. Łódź.pdf and Lodz.pdf in one folder become the same name, and the system either asks about overwriting or adds a number. With a longer list, look for duplicates before you rename anything.

Replacing letters is a simplification. “ß” becomes ss, but German names often write “ü” as “ue” (Müller as Mueller), and the tool does not do that: “Müller” becomes “Muller”.

Slug length

The generator shows the slug length in characters and a preview of the address. For the title “Raport kwartalny: sprzedaż w województwie łódzkim i śląskim, wnioski dla zarządu” (a Polish report title) the slug is 78 characters. With a maximum length of 40 the tool cuts it at a word boundary: raport-kwartalny-sprzedaz-w-wojewodztwie. The dangling “w” at the end spoils it. With stop word removal also on, the slug reads better: raport-kwartalny-sprzedaz-wojewodztwie (38 characters). The tool does not decide which words matter in your title, so read the result before you publish.

The slug generator in “One slug per line” mode: the eight file names from the list turned into lowercase slugs joined with hyphens

When to remove accents and when to keep them

Remove them when the file goes to a system that takes only ASCII, into an archive someone will open with an unknown program, or when you want a link that can be read in full. Keep them when the name should read naturally for the recipient (a document for a client) and the file does not pass through any place from the first table. For web addresses Google does not require ASCII, so that is an editorial choice.