Skip to content

Why subtitles show strange characters (and how to fix them on Mac)

Why do subtitle files show strange symbols and question marks? Learn how character encodings cause mojibake and how to convert subtitles to UTF-8 on Mac.

In short

  • Garbled characters (mojibake) happen when a player decodes a subtitle file with the wrong character encoding.
  • Accented vowels break when single-byte Windows-1252 files are parsed by modern UTF-8 decoders.
  • Arabic, Hebrew, and Cyrillic subtitles require UTF-8 encoding and bidirectional text shaping.
  • You can convert corrupted subtitle files to clean UTF-8 on macOS using TextEdit or the iconv command.
  • MacLC reads text subtitles in any character encoding.
On this page
  1. What causes garbled subtitle characters and mojibake?
  2. Which languages break most often in subtitle files?
  3. How do you convert a garbled subtitle file to UTF-8 in macOS TextEdit?
  4. How do you convert subtitles to UTF-8 using macOS Terminal (iconv)?
  5. How do you fix subtitle encoding in VLC for Mac?
  6. Why are some subtitles impossible to fix with text re-encoding?
  7. What should you do with your subtitles now?

Subtitles display strange characters, black diamonds with question marks, or random symbols when there is a mismatch between the character encoding used to save the subtitle file and the character encoding used by your media player to decode it.

This visual corruption is known across computer science as mojibake (a Japanese term meaning character transformation). It does not mean your video file is broken or that your download is infected. It means your media player’s text engine is reading the file’s raw binary bytes through the wrong language alphabet table.

What causes garbled subtitle characters and mojibake?

Computers do not store human letters, vowels, or punctuation marks directly on disk. They store numbers as binary bytes. A character encoding is an agreed-upon dictionary that maps specific numerical byte values to visible typographical symbols.

In the early days of personal computing, digital text relied on 7-bit ASCII, which could represent only 128 characters—enough for English letters, numbers, and basic punctuation. To accommodate non-English languages, operating systems created 8-bit code pages containing 256 character positions:

  • Windows-1252 (CP-1252): Standard for Western European languages (French, Spanish, German).
  • Windows-1256: Standard for Arabic script.
  • Windows-1251: Standard for Cyrillic alphabets (Russian, Ukrainian, Bulgarian).
  • Windows-1253: Standard for Greek.
  • Shift-JIS: Standard for Japanese.

Problems occur because these legacy code pages reuse the exact same numerical byte values for completely different letters. In Windows-1252, byte 0xE9 represents the French accented vowel é. In Windows-1256, that identical byte 0xE9 represents the Arabic letter Dal (د). In Windows-1251, byte 0xE9 represents the Cyrillic small letter I (и).

Modern operating systems and open-source standards solved this chaos by adopting UTF-8, defined in RFC 3629. UTF-8 is a universal variable-width encoding that represents over 150,000 characters from every living and historical language using sequences of one to four bytes.

How Mojibake Happens:
Original French text:    café
UTF-8 byte sequence:     0x63 0x61 0x66 0xC3 0xA9
Interpreted as CP-1252:  c    a    f    à    ©     --> Displays as "café"

If a community contributor saved an SRT file using legacy Windows-1252, and your modern Mac video player assumes the file is UTF-8, the decoder encounters single-byte values where it expects multi-byte sequences. It fails to parse the letters, outputting garbled text like café instead of café, or replacing letters with the Unicode Replacement Character (``).

Which languages break most often in subtitle files?

Character encoding mismatches disproportionately affect languages that utilize accent marks, non-Latin alphabets, or right-to-left scripts.

Language Family Common Legacy Encoding Typical Mojibake Symptoms Root Cause
Western European (French, Spanish, German) Windows-1252 / ISO-8859-1 café, año, straße UTF-8 parser misreading single-byte accents as two CP-1252 symbols
Arabic Windows-1256 ÇáÚÑÈíÉ or disconnected backward letters Single-byte Arabic code points parsed through Latin tables
Cyrillic (Russian, Ukrainian) Windows-1251 / KOI8-R привет or random accented vowels Cyrillic 2-byte UTF-8 sequences mapped to Latin-1 symbols
Greek Windows-1253 / ISO-8859-7 ÅëëçíéêÜ Greek letters mapped to Western European accents
East Asian (Japanese, Chinese) Shift-JIS / GB2312 / Big5 Unreadable Chinese Kanji or syntax errors Multi-byte East Asian encodings colliding with UTF-8 byte bounds

Arabic and Hebrew subtitles face a second challenge: bidirectional text shaping. Arabic script is written from right to left (RTL), and individual letters change their physical cursive shape depending on whether they appear at the beginning, middle, or end of a word.

If a media player decodes the file using standard left-to-right Latin rendering engines without integrated text-shaping libraries like FriBidi and HarfBuzz, the Arabic words appear backward, with every letter detached into isolated blocks.

To understand how subtitle cue structures are organized line by line, see our guide on what an SRT file is.

How do you convert a garbled subtitle file to UTF-8 in macOS TextEdit?

You do not need to purchase specialized subtitling tools to fix corrupted characters on your Mac. You can re-encode any text subtitle file using the built-in TextEdit application included with macOS.

Follow these steps to convert an SRT file cleanly into UTF-8:

  1. Launch TextEdit on your Mac.
  2. Open TextEdit › Settings (or Preferences on older macOS releases) from the menu bar (⌘,).
  3. Click the Open and Save tab.
  4. Verify that Opening files is set to Automatic and Saving files is set to Unicode (UTF-8).
  5. In Finder, right-click your .srt file, select Open With, and choose TextEdit.
  6. If the file opens with garbled characters, select File › Open (⌘O) inside TextEdit, click your subtitle file once, and inspect the Plain Text Encoding dropdown menu at the bottom of the open dialog. Select the specific legacy code page that matches the language (such as Western (Windows Latin 1) for European languages or Arabic (Windows) for Arabic).
  7. Once the characters display legibly on screen, select File › Duplicate (⇧⌘S), then select File › Save (⌘S).
  8. In the save dialog, name the file, verify that Plain Text Encoding is set to Unicode (UTF-8), and click Save.

Your new subtitle file is now encoded in universal UTF-8 and will open with clean typography on any modern media player.

How do you convert subtitles to UTF-8 using macOS Terminal (iconv)?

If TextEdit struggles to detect the original code page, or if you need to batch-convert multiple subtitle files across an entire season of a television series, the built-in macOS Terminal utility iconv provides a reliable conversion.

iconv is a standard Unix command-line library pre-installed on every Mac that converts text streams from one character encoding to another.

Step 1: Open Terminal

Open Terminal from /Applications/Utilities/ or search for it using Spotlight (⌘Space).

Step 2: Run the conversion command

Navigate to the directory containing your subtitle file using the cd command, or write out the full file paths.

To convert a Western European subtitle file saved in Windows-1252 into clean UTF-8:

iconv -f WINDOWS-1252 -t UTF-8 "input.srt" > "output_utf8.srt"

To convert an Arabic subtitle file saved in Windows-1256 into clean UTF-8:

iconv -f WINDOWS-1256 -t UTF-8 "arabic_input.srt" > "arabic_utf8.srt"

To convert a Cyrillic subtitle file saved in Windows-1251:

iconv -f WINDOWS-1251 -t UTF-8 "russian_input.srt" > "russian_utf8.srt"

The conversion takes less than a second. Once generated, replace the original .srt file with the newly created _utf8.srt file.

How do you fix subtitle encoding in VLC for Mac?

If you use VLC media player on macOS, you can configure its internal subtitle demuxer to apply a specific fallback encoding when a subtitle file lacks UTF-8 metadata:

  1. Open VLC › Settings (or Preferences) from the menu bar (⌘,).
  2. Click the Subtitles / OSD icon at the top of the preferences window.
  3. Locate the Default encoding dropdown menu.
  4. By default, VLC sets this to Universal (UTF-8). If you are watching a movie with a legacy subtitle, change this dropdown to match your language’s legacy code page (for example, Arabic (Windows-1256) or Western European (Windows-1252)).
  5. Click Save and restart playback.

Remember to revert this setting back to Universal (UTF-8) when you finish the movie, or modern UTF-8 subtitles will begin exhibiting garbled characters in future videos. If your subtitles fail to appear entirely, see our complete guide to fixing subtitles on Mac.

Why are some subtitles impossible to fix with text re-encoding?

If you open a subtitle file and discover unreadable characters that cannot be resolved with UTF-8 conversion, you may not be looking at a text subtitle file at all.

Commercial Blu-ray discs and DVDs do not store subtitles as text. They store subtitles as pre-rendered bitmap images:

  • Blu-ray PGS (.sup): High-definition graphical images.
  • DVD VobSub (.sub / .idx): Standard-definition 2-bit run-length encoded images.

If an MKV file contains PGS or VobSub tracks, you cannot edit them in TextEdit or convert them using iconv. Attempting to force an image file through a text converter will corrupt the binary graphic headers. To understand how graphic subtitles work, read our explainer on PGS subtitles explained.

If your subtitle text displays correctly but appears several seconds before or after the dialogue is spoken, your issue is timing rather than encoding. Read our walkthrough on fixing subtitles out of sync to correct offsets and frame-rate drift.

What should you do with your subtitles now?

You should not have to suffer through broken accented vowels, black diamond question marks, or backward Arabic text when watching a movie on your Mac.

To ensure your subtitles always display cleanly:

  1. Ensure your subtitle documents are saved with universal UTF-8 encoding.
  2. Keep the subtitle file in the same folder as your movie with an identical base name.
  3. Download MacLC from the download page.

MacLC is built specifically for Apple Silicon Macs running macOS 26 Tahoe or later. It handles text subtitles in any character encoding, supports vector typography through libass, and renders clean, legible subtitles across your films.

Questions people ask

Why are my subtitles showing weird symbols like é and question marks?

This character corruption is known as mojibake. It occurs when a subtitle file was saved using a legacy single-byte character encoding (like Windows-1252) but your media player attempts to interpret the bytes as modern multi-byte UTF-8.

How do I fix Arabic subtitles displaying as unreadable symbols on Mac?

Arabic subtitles saved in legacy Windows-1256 must be converted to Unicode (UTF-8). In Terminal, run iconv -f WINDOWS-1256 -t UTF-8 input.srt > output.srt. Additionally, use a media player that bundles FriBidi and HarfBuzz for proper right-to-left letter shaping.

How do I change a subtitle file to UTF-8 in macOS TextEdit?

Open TextEdit, navigate to Settings › Open and Save, and verify that Plain text file encoding is set to Unicode (UTF-8). Open your subtitle file, select Format › Make Plain Text if necessary, and save the file.

What is the best character encoding for subtitles?

Unicode UTF-8 is the universal international standard for subtitle files. It supports every language, accent mark, and alphabet on earth within a single document and is supported by every modern operating system.

Before you download

MacLC is free. If it is useful to you, a gift helps it skip “Open Anyway” and funds the next release.