Skip to content
Novus Examples

Text encoding test files

UTF-8, UTF-8-BOM, UTF-16, and Latin-1 files with documented encodings and line endings for testing charset detection.

178 of 178 files
Preview of UTF-8 Text (LF)
txt
187 B
Actual file preview for UTF-8 Text (LF)

UTF-8 Text (LF)

A UTF-8 text file with Unix (LF) line endings and no byte-order mark, containing accented and symbol characters — for testing charset detection.

File
TXT · Text Encodings · UTF-8 (no BOM)
Preview of UTF-8 Text with BOM (CRLF)
txt
190 B
Actual file preview for UTF-8 Text with BOM (CRLF)

UTF-8 Text with BOM (CRLF)

A UTF-8 text file that starts with a byte-order mark (EF BB BF) and uses Windows (CRLF) line endings — for testing BOM handling and line-ending detection.

File
TXT · Text Encodings · UTF-8 with BOM
Preview of UTF-16 LE Text (CRLF)
txt
330 B
Actual file preview for UTF-16 LE Text (CRLF)

UTF-16 LE Text (CRLF)

A UTF-16 little-endian text file with a BOM (FF FE) and CRLF line endings — for testing wide-character decoding and encoding detection.

File
TXT · Text Encodings · UTF-16 LE with BOM
Preview of UTF-16 BE Text (BOM)
txt
238 B
Actual file preview for UTF-16 BE Text (BOM)

UTF-16 BE Text (BOM)

A UTF-16 big-endian text file with a BOM (FE FF) and CRLF line endings — for testing wide-character decoding and byte-order detection.

File
TXT · Text Encodings · UTF-16 BE with BOM
Preview of UTF-32 LE Text (BOM)
txt
464 B
Actual file preview for UTF-32 LE Text (BOM)

UTF-32 LE Text (BOM)

A UTF-32 little-endian text file with a BOM (FF FE 00 00) — four bytes per code point, for testing full-width Unicode decoders and byte-order handling.

File
TXT · Text Encodings · UTF-32 LE with BOM
Preview of Latin-1 (ISO-8859-1) Text
txt
89 B
Actual file preview for Latin-1 (ISO-8859-1) Text

Latin-1 (ISO-8859-1) Text

A single-byte Latin-1 (ISO-8859-1) text file using high-range accented characters — for testing legacy 8-bit charset detection and transcoding to UTF-8.

File
TXT · Text Encodings · ISO-8859-1 (Latin-1)
Preview of Windows-1252 Text
txt
106 B
Actual file preview for Windows-1252 Text

Windows-1252 Text

A Windows-1252 text file using the 0x80–0x9F range (smart quotes, em dash, euro, bullet) that naive Latin-1 decoders get wrong — for testing codepage detection and transcoding.

File
TXT · Text Encodings · Windows-1252 (CP1252)
Preview of Shift-JIS Japanese Text
txt
85 B
Actual file preview for Shift-JIS Japanese Text

Shift-JIS Japanese Text

A Shift-JIS encoded Japanese text file — a multi-byte East-Asian encoding, for testing CJK charset detection and Shift-JIS→UTF-8 conversion.

File
TXT · Text Encodings · Japanese
Preview of Mixed Line Endings Text
txt
74 B
Actual file preview for Mixed Line Endings Text

Mixed Line Endings Text

A UTF-8 text file that deliberately mixes LF, CRLF, and lone-CR line endings within one file — for testing newline normalisation and line-counting logic.

File
TXT · Text Encodings · UTF-8
Preview of Right-to-Left / Bidi Text
txt
159 B
Actual file preview for Right-to-Left / Bidi Text

Right-to-Left / Bidi Text

A UTF-8 file mixing left-to-right and right-to-left scripts (Arabic and Hebrew alongside English) — for testing bidirectional text handling, reordering, and rendering.

File
TXT · Text Encodings · UTF-8
Preview of Emoji & ZWJ Sequences Text
txt
193 B
Actual file preview for Emoji & ZWJ Sequences Text

Emoji & ZWJ Sequences Text

A UTF-8 file of emoji including zero-width-joiner sequences, regional-indicator flag pairs, and skin-tone modifiers — multi-code-point grapheme clusters for testing grapheme segmentation and display-width calculation.

File
TXT · Text Encodings · UTF-8
Preview of Combining Marks (NFC vs NFD) Text
txt
98 B
Actual file preview for Combining Marks (NFC vs NFD) Text

Combining Marks (NFC vs NFD) Text

A UTF-8 file with the same words in both NFC (precomposed) and NFD (decomposed combining marks) normalisation forms — for testing normalisation-aware comparison, search, and dedup.

File
TXT · Text Encodings · UTF-8
Preview of Very Long Single Line Text
txt
17.6 KB
Actual file preview for Very Long Single Line Text

Very Long Single Line Text

A UTF-8 file consisting of a single very long line (~18,000 characters with no interior newline) — for testing editors, buffers, and line-oriented parsers against long-line handling.

File
TXT · Text Encodings · UTF-8
Preview of Latin-1 Encoded CSV
csv
86 B
Actual file preview for Latin-1 Encoded CSV

Latin-1 Encoded CSV

A CSV encoded in Latin-1 (ISO-8859-1) with accented names — for testing encoding detection and mis-decoding (it will look wrong if read as UTF-8).

File
CSV · CSV · 3 rows
Preview of Fixed-Width Positions File (TXT)
txt
108 B
Actual file preview for Fixed-Width Positions File (TXT)

Fixed-Width Positions File (TXT)

A classic fixed-width text extract with documented column positions — for COBOL-style / mainframe importer tests.

File
TXT · Encodings · 3 rows
Preview of ZIP - UTF-8 Name Flag Set
zip
621 B
Actual file preview for ZIP - UTF-8 Name Flag Set

ZIP - UTF-8 Name Flag Set

Member names stored as UTF-8 with general-purpose bit 11 (the language-encoding flag) set, which is the modern, unambiguous way to carry a non-ASCII filename in a ZIP. Its CP437 twin encodes the same archive the legacy way, so a reader's encoding heuristic can be compared against a case where the answer is declared.

File
ZIP · Zip Encoding · 3 members
Use case
Conversion testingEncoding detection· Paired fixture
Preview of ZIP - CP437 Legacy Name Encoding
zip
631 B
Actual file preview for ZIP - CP437 Legacy Name Encoding

ZIP - CP437 Legacy Name Encoding

The legacy twin: names encoded in IBM CP437 with the language-encoding flag clear, which is what the ZIP spec says an un-flagged name means. Decoding these bytes as UTF-8 produces mojibake or an outright decode error, which is exactly the bug this file is for.

File
ZIP · Zip Encoding · 3 members
Use case
Conversion testingEncoding detection· Paired fixture
Preview of ZIP - Info-ZIP Unicode Path Extra Field
zip
753 B
Actual file preview for ZIP - Info-ZIP Unicode Path Extra Field

ZIP - Info-ZIP Unicode Path Extra Field

The third way a ZIP carries a non-ASCII name: an ASCII-safe name in the header plus an Info-ZIP Unicode Path extra field (0x7075) holding the real UTF-8 name and a CRC32 of the header name. A reader must prefer the extra field, but only while that CRC still matches the header name it was computed from.

File
ZIP · Zip Encoding · 3 members
Use case
Conversion testingEncoding detection+1· Conversion set
Preview of TAR - PAX UTF-8 Member Names
tar
10 KB
Actual file preview for TAR - PAX UTF-8 Member Names

TAR - PAX UTF-8 Member Names

PAX is the only tar variant that says what encoding its names are in: extended-header records are UTF-8 by definition. These three members carry accented Spanish and Japanese path components, so a reader that applies a locale-dependent guess instead of trusting the format produces mojibake on exactly this file.

File
TAR · Tar Format · 3 members
Use case
Conversion testingEncoding detection· Conversion set
Preview of EPUB 3 - Metadata with Diacritics and a Combining Mark
epub
2.2 KB
Actual file preview for EPUB 3 - Metadata with Diacritics and a Combining Mark

EPUB 3 - Metadata with Diacritics and a Combining Mark

A package document whose title and creator carry precomposed accents, a combining ring above a bare letter, and a typographic apostrophe. For testing normalisation, sorting and filename derivation - the combining mark is the one that breaks naive length and comparison code.

File
EPUB · Metadata Encoding
Use case
Encoding detectionMetadata testing· Conversion set
Preview of EPUB 3 - Metadata Written as Numeric Character References
epub
2.2 KB
Actual file preview for EPUB 3 - Metadata Written as Numeric Character References

EPUB 3 - Metadata Written as Numeric Character References

Every non-ASCII character in the metadata is written as a hexadecimal numeric character reference, so the package document is pure ASCII on disk while the title is Han and Cyrillic once parsed. For testing tools that read metadata with a regex instead of an XML parser.

File
EPUB · Metadata Encoding
Use case
Encoding detectionMetadata testing· Conversion set
Preview of EPUB 3 - UTF-16 Package Document
epub
2.3 KB
Actual file preview for EPUB 3 - UTF-16 Package Document

EPUB 3 - UTF-16 Package Document

The package document is encoded as UTF-16 little-endian with a byte order mark while the content documents stay UTF-8 - a combination EPUB permits and almost nothing tests. For finding the parser that opens the OPF as UTF-8 and sees a file full of null bytes.

File
EPUB · Metadata Encoding
Use case
Encoding detectionMetadata testing+1· Conversion set
Preview of EPUB 3 - Metadata with Astral-Plane Characters
epub
2.2 KB
Actual file preview for EPUB 3 - Metadata with Astral-Plane Characters

EPUB 3 - Metadata with Astral-Plane Characters

A title containing two characters above the Basic Multilingual Plane - a blue book and a musical clef - plus a Japanese description. Anything that counts characters as UTF-16 code units, or truncates a title to a byte length, splits a surrogate pair here.

File
EPUB · Metadata Encoding
Use case
Encoding detectionMetadata testing+1· Conversion set
Preview of EPUB 3 - UTF-8 BOM on Every XML Part
epub
2.2 KB
Actual file preview for EPUB 3 - UTF-8 BOM on Every XML Part

EPUB 3 - UTF-8 BOM on Every XML Part

The package document, the navigation document and the chapter each begin with a UTF-8 byte order mark before the XML declaration. Legal, and the classic reason a strict parser reports content before the prolog on a file that looks perfectly fine in an editor.

File
EPUB · Metadata Encoding
Use case
Encoding detectionMetadata testing+1· Conversion set
Preview of FB2 - Declared windows-1251 Encoding (Cyrillic)
fb2
1 KB
Actual file preview for FB2 - Declared windows-1251 Encoding (Cyrillic)

FB2 - Declared windows-1251 Encoding (Cyrillic)

A Cyrillic FictionBook stored in windows-1251 and declaring that encoding in its XML declaration - the single-byte legacy encoding a large share of real FB2 files still use. For testing importers that assume every XML file is UTF-8 and produce mojibake instead of an error.

File
FB2 · Fb2 · windows-1251
Use case
Encoding detectionConversion testing· Conversion set
Preview of EML — Quoted-Printable: Accented UTF-8 Body
eml
609 B
Actual file preview for EML — Quoted-Printable: Accented UTF-8 Body

EML — Quoted-Printable: Accented UTF-8 Body

A quoted-printable text/plain message in utf-8 whose body carries accented French text, guillemets, an em dash and a euro sign. It is the exact twin of the base64 message beside it: both decode to the same 247 octets, so a decoder can be diffed against a known-equal pair.

File
EML · Mime
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — Base64: Accented UTF-8 Body
eml
672 B
Actual file preview for EML — Base64: Accented UTF-8 Body

EML — Base64: Accented UTF-8 Body

A base64 text/plain message in utf-8 carrying the identical body to the quoted-printable twin beside it. Base64 is opaque to whitespace and line-start characters, so it is the reference side of the pair when a QP decoder is suspect.

File
EML · Mime
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — Quoted-Printable: Trailing Whitespace
eml
537 B
Actual file preview for EML — Quoted-Printable: Trailing Whitespace

EML — Quoted-Printable: Trailing Whitespace

A quoted-printable text/plain message in utf-8 whose body ends lines with spaces and tabs that quoted-printable must encode as =20 and =09. It is the exact twin of the base64 message beside it: both decode to the same 193 octets, so a decoder can be diffed against a known-equal pair.

File
EML · Mime
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — Base64: Trailing Whitespace
eml
596 B
Actual file preview for EML — Base64: Trailing Whitespace

EML — Base64: Trailing Whitespace

A base64 text/plain message in utf-8 carrying the identical body to the quoted-printable twin beside it. Base64 is opaque to whitespace and line-start characters, so it is the reference side of the pair when a QP decoder is suspect.

File
EML · Mime
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — Quoted-Printable: Soft Line Breaks
eml
803 B
Actual file preview for EML — Quoted-Printable: Soft Line Breaks

EML — Quoted-Printable: Soft Line Breaks

A quoted-printable text/plain message in utf-8 whose body holds a single line far past 76 columns, forcing quoted-printable soft breaks. It is the exact twin of the base64 message beside it: both decode to the same 451 octets, so a decoder can be diffed against a known-equal pair.

File
EML · Mime
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — Base64: Soft Line Breaks
eml
948 B
Actual file preview for EML — Base64: Soft Line Breaks

EML — Base64: Soft Line Breaks

A base64 text/plain message in utf-8 carrying the identical body to the quoted-printable twin beside it. Base64 is opaque to whitespace and line-start characters, so it is the reference side of the pair when a QP decoder is suspect.

File
EML · Mime
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — Quoted-Printable: ISO-8859-1 Body
eml
539 B
Actual file preview for EML — Quoted-Printable: ISO-8859-1 Body

EML — Quoted-Printable: ISO-8859-1 Body

A quoted-printable text/plain message in iso-8859-1 whose body is single-byte ISO-8859-1 rather than UTF-8, so each umlaut is one octet. It is the exact twin of the base64 message beside it: both decode to the same 176 octets, so a decoder can be diffed against a known-equal pair.

File
EML · Mime
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — Base64: ISO-8859-1 Body
eml
577 B
Actual file preview for EML — Base64: ISO-8859-1 Body

EML — Base64: ISO-8859-1 Body

A base64 text/plain message in iso-8859-1 carrying the identical body to the quoted-printable twin beside it. Base64 is opaque to whitespace and line-start characters, so it is the reference side of the pair when a QP decoder is suspect.

File
EML · Mime
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — Quoted-Printable: From-Line and Lone Dot
eml
565 B
Actual file preview for EML — Quoted-Printable: From-Line and Lone Dot

EML — Quoted-Printable: From-Line and Lone Dot

A quoted-printable text/plain message in utf-8 whose body starts a line with "From " and holds a lone "." line, which quoted-printable escapes as =46rom and =2E. It is the exact twin of the base64 message beside it: both decode to the same 219 octets, so a decoder can be diffed against a known-equal pair.

File
EML · Mime
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — Base64: From-Line and Lone Dot
eml
630 B
Actual file preview for EML — Base64: From-Line and Lone Dot

EML — Base64: From-Line and Lone Dot

A base64 text/plain message in utf-8 carrying the identical body to the quoted-printable twin beside it. Base64 is opaque to whitespace and line-start characters, so it is the reference side of the pair when a QP decoder is suspect.

File
EML · Mime
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — RFC 2047 Subject: UTF-8 'B' Encoding
eml
543 B
Actual file preview for EML — RFC 2047 Subject: UTF-8 'B' Encoding

EML — RFC 2047 Subject: UTF-8 'B' Encoding

A Subject header carrying accented Latin text and an emoji as a single UTF-8 base64 encoded-word. Its Q-encoded twin decodes to the identical string, so the two together isolate the encoding from the charset.

File
EML · Headers · B (base64)
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — RFC 2047 Subject: UTF-8 'Q' Encoding
eml
556 B
Actual file preview for EML — RFC 2047 Subject: UTF-8 'Q' Encoding

EML — RFC 2047 Subject: UTF-8 'Q' Encoding

The same Subject as the UTF-8 'B' twin, written with 'Q' encoding instead: underscores stand for spaces and every non-token octet is an =XX escape. A decoder that forgets the underscore rule produces visibly different text from its twin.

File
EML · Headers · Q (quoted-printable-like)
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — RFC 2047 Subject: ISO-8859-1 'Q' Encoding
eml
553 B
Actual file preview for EML — RFC 2047 Subject: ISO-8859-1 'Q' Encoding

EML — RFC 2047 Subject: ISO-8859-1 'Q' Encoding

A German Subject encoded as ISO-8859-1 'Q', the shape most legacy mail actually uses. Each umlaut is one =XX escape, so a decoder that assumes UTF-8 produces mojibake rather than a clean error.

File
EML · Headers · Q
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — RFC 2047 Subject: ISO-8859-1 'B' Encoding
eml
554 B
Actual file preview for EML — RFC 2047 Subject: ISO-8859-1 'B' Encoding

EML — RFC 2047 Subject: ISO-8859-1 'B' Encoding

The ISO-8859-1 Subject again, base64-encoded instead of Q-encoded. Base64 hides the charset entirely, so this is the fixture that catches a decoder guessing the charset from the octets instead of reading the encoded-word's charset token.

File
EML · Headers · B (base64)
Use case
Email parsingEncoding detection+1· Paired fixture
Preview of EML — RFC 2047 Subject: Shift_JIS 'B' Encoding
eml
513 B
Actual file preview for EML — RFC 2047 Subject: Shift_JIS 'B' Encoding

EML — RFC 2047 Subject: Shift_JIS 'B' Encoding

A Japanese Subject as a Shift_JIS base64 encoded-word. Shift_JIS second bytes overlap ASCII punctuation values, so a decoder that scans the decoded octets for delimiters before converting the charset splits the string in the wrong place.

File
EML · Headers · B (base64)
Use case
Email parsingEncoding detection+1· Conversion set
Preview of EML — RFC 2047 Subject: KOI8-R 'B' Encoding
eml
519 B
Actual file preview for EML — RFC 2047 Subject: KOI8-R 'B' Encoding

EML — RFC 2047 Subject: KOI8-R 'B' Encoding

A Russian Subject as a KOI8-R base64 encoded-word. KOI8-R orders Cyrillic letters by Latin transliteration rather than alphabetically, so a decoder that substitutes any other Cyrillic codepage returns readable-looking but wrong text.

File
EML · Headers · B (base64)
Use case
Email parsingEncoding detection+1· Conversion set
Preview of EML — RFC 2047 Subject Mixing Three Charsets
eml
616 B
Actual file preview for EML — RFC 2047 Subject Mixing Three Charsets

EML — RFC 2047 Subject Mixing Three Charsets

A single Subject built from three encoded-words in three charsets and two encodings. RFC 2047 allows this, and it is what happens when a subject is quoted through several mail systems, so each word has to be decoded on its own terms.

File
EML · Headers
Use case
Email parsingEncoding detection+1· Conversion set
Preview of EML — Adjacent Encoded-Words (Separator Must Disappear)
eml
544 B
Actual file preview for EML — Adjacent Encoded-Words (Separator Must Disappear)

EML — Adjacent Encoded-Words (Separator Must Disappear)

A Subject split mid-word across two adjacent encoded-words. RFC 2047 requires the linear whitespace between them to be discarded, so the correct result is one word; a decoder that keeps the space renders a split that reads as a typo.

File
EML · Headers
Use case
Email parsingEncoding detection+1· Conversion set
Preview of EML — Encoded-Word Subject Folded Over Four Lines
eml
600 B
Actual file preview for EML — Encoded-Word Subject Folded Over Four Lines

EML — Encoded-Word Subject Folded Over Four Lines

A Subject folded across four physical lines, one encoded-word per line, which is the shape RFC 2047 prescribes for long international headers. Because the fold whitespace is discarded on decode, each continuation word carries its own leading space inside the encoded-word — omit that and the subject decodes run-together.

File
EML · Headers
Use case
Email parsingEncoding detection+1· Conversion set
Preview of EML — Encoded-Word Longer Than the 75-Character Limit
eml
621 B
Actual file preview for EML — Encoded-Word Longer Than the 75-Character Limit

EML — Encoded-Word Longer Than the 75-Character Limit

One unbroken encoded-word of 148 characters, well past the 75-character ceiling RFC 2047 sets. Real senders emit these, and a decoder should still recover the whole word rather than truncating it at 75 or rejecting the header.

File
EML · Headers · B (base64)
Use case
Email parsingEncoding detection+1· Conversion set
Preview of EML — Encoded-Words in Display Names and a Filename
eml
904 B
Actual file preview for EML — Encoded-Words in Display Names and a Filename

EML — Encoded-Words in Display Names and a Filename

Encoded-words used everywhere they turn up in practice: both display names, the Subject, and — against the spec but very common — inside the quoted filename parameter, where RFC 2231 is the conformant mechanism. A tolerant parser decodes all four.

File
EML · Headers
Use case
Email parsingEncoding detection+1· Conversion set
Preview of EML — RFC 2231 Continuation Filename With size and creation-date
eml
886 B
Actual file preview for EML — RFC 2231 Continuation Filename With size and creation-date

EML — RFC 2231 Continuation Filename With size and creation-date

The conformant answer to non-ASCII filenames: a filename split into three numbered RFC 2231 segments with a charset and a language tag, plus size and creation-date parameters. Parsers commonly handle filename*= but not the numbered continuation form.

File
EML · Mime · de
Use case
Email parsingEncoding detection+1· Conversion set
Preview of MBOX — Four Charsets and Both Transfer Encodings
mbox
2 KB
Actual file preview for MBOX — Four Charsets and Both Transfer Encodings

MBOX — Four Charsets and Both Transfer Encodings

One mailbox whose four messages each use a different charset and alternate between quoted-printable and base64, with RFC 2047 subjects to match. The file itself is LF-stored while the encoded payloads decode to CRLF text — the split every importer has to handle.

File
MBOX · Mailbox
Use case
Email parsingEncoding detection+1· Conversion set
Preview of Java ResourceBundle .properties — English
properties
1.1 KB
Actual file preview for Java ResourceBundle .properties — English

Java ResourceBundle .properties — English

A English Java ResourceBundle with MessageFormat patterns, a ChoiceFormat plural, positional arguments, escaped braces and apostrophes, a backslash line continuation, and non-ASCII carried as \uXXXX escapes because .properties is defined as ISO-8859-1. The bytes on disk are pure ASCII.

File
PROPERTIES · Icu · ISO-8859-1, non-ASCII written as \uXXXX escapes
Use case
InternationalizationLocalization catalogs+2· Conversion set
Preview of Java ResourceBundle .properties — German
properties
934 B
Actual file preview for Java ResourceBundle .properties — German

Java ResourceBundle .properties — German

A German Java ResourceBundle with MessageFormat patterns, a ChoiceFormat plural, positional arguments, escaped braces and apostrophes, a backslash line continuation, and non-ASCII carried as \uXXXX escapes because .properties is defined as ISO-8859-1. The bytes on disk are pure ASCII.

File
PROPERTIES · Icu · ISO-8859-1, non-ASCII written as \uXXXX escapes
Use case
InternationalizationLocalization catalogs+2· Conversion set
Preview of Apple .strings — UTF-16 LE with BOM (Japanese)
strings
1.5 KB
Actual file preview for Apple .strings — UTF-16 LE with BOM (Japanese)

Apple .strings — UTF-16 LE with BOM (Japanese)

The encoding fixture the .strings format needs: a Japanese catalog written as UTF-16 Little Endian with a byte-order mark, which is what Xcode has historically produced and what a UTF-8-only reader turns into mojibake or a decode error. Also carries full-width punctuation and an ideographic space for width and line-breaking tests.

File
STRINGS · Apple · UTF-16 LE
Use case
InternationalizationEncoding detection+1· Conversion set
Preview of Unicode Bidi Controls — LRM, RLM, ALM, isolates and embeddings
txt
3.5 KB
Actual file preview for Unicode Bidi Controls — LRM, RLM, ALM, isolates and embeddings

Unicode Bidi Controls — LRM, RLM, ALM, isolates and embeddings

A reference sheet in which each of the ten shipped bidi control characters appears literally between ASCII guards, with its code point, UTF-8 bytes and the job it does. The two override characters are named but deliberately absent: a bidi rendering fixture does not need to ship the Trojan Source vector.

File
TXT · Bidi · UTF-8
Use case
InternationalizationEncoding detection+1· Conversion set
Preview of Bidi — where a mark is actually required (Arabic)
txt
2.6 KB
Actual file preview for Bidi — where a mark is actually required (Arabic)

Bidi — where a mark is actually required (Arabic)

Six Arabic sentences containing a Latin filename, a phone number, a version range, a mixed-script path, a percentage and a bracketed insertion — each shown first as a translator usually delivers it and then with the one invisible character that makes it render correctly. The two forms differ by exactly one code point.

File
TXT · Bidi · UTF-8
Use case
InternationalizationEncoding detection+1· Conversion set
Preview of Bidi — bracket mirroring in RTL paragraphs (Hebrew and Arabic)
txt
1.4 KB
Actual file preview for Bidi — bracket mirroring in RTL paragraphs (Hebrew and Arabic)

Bidi — bracket mirroring in RTL paragraphs (Hebrew and Arabic)

Mirroring is a rendering property of the bidi algorithm, not a transformation of the text: a U+0028 LEFT PARENTHESIS inside an RTL run is DRAWN as ')' while the stored byte never changes. These Hebrew and Arabic lines make that testable, and list the neutral characters that look like they should mirror but do not.

File
TXT · Bidi · UTF-8
Use case
InternationalizationEncoding detection+1· Conversion set
Preview of Locale Number Formats — twelve locales (CSV)
csv
953 B
Actual file preview for Locale Number Formats — twelve locales (CSV)

Locale Number Formats — twelve locales (CSV)

The same number, 1234567.89, rendered for twelve locales, with the group and decimal separator that produced each one named by code point and present literally in the cell. Four of the separators are not ASCII — U+00A0, U+202F, U+2019 and U+066C — and ar-EG additionally switches the digits themselves.

File
CSV · Formatting · 12 rows
Use case
InternationalizationCSV parsing+1· Conversion set
Preview of Locale Number Formats — twelve locales with documented traps (JSON)
json
5.2 KB
Actual file preview for Locale Number Formats — twelve locales with documented traps (JSON)

Locale Number Formats — twelve locales with documented traps (JSON)

The structured twin of the number-format table, plus four documented traps: es-ES's minimumGroupingDigits=2 (which leaves a four-digit integer ungrouped), the four non-ASCII group separators, the arab numbering system's own digits, and the seven locales here whose decimal separator is a comma.

File
JSON · Formatting
Use case
InternationalizationJSON parsing+1· Conversion set
Preview of Locale Currency Formats — eleven locales (CSV)
csv
833 B
Actual file preview for Locale Currency Formats — eleven locales (CSV)

Locale Currency Formats — eleven locales (CSV)

12345.60 in each locale's own currency, with the fraction-digit count and the symbol placement that produced it. JPY takes zero decimals and rounds; six rows separate the amount from the symbol with U+00A0 rather than a plain space; and ar-EG puts the amount in Arabic-Indic digits.

File
CSV · Formatting · 11 rows
Use case
InternationalizationCSV parsing+1· Conversion set
Preview of Locale Currency Formats — minor units and invisible separators (JSON)
json
4 KB
Actual file preview for Locale Currency Formats — minor units and invisible separators (JSON)

Locale Currency Formats — minor units and invisible separators (JSON)

The structured currency table with the three traps spelled out: minor units belong to the CURRENCY not the locale (JPY 0, USD 2, KWD/BHD/JOD 3), the gap before a trailing symbol is U+00A0 in six of these locales, and CLDR's ar-EG pattern contains an invisible U+200F that breaks naive equality assertions.

File
JSON · Formatting
Use case
InternationalizationJSON parsing+1· Conversion set
Preview of Locale Separator and Digit Characters — literal specimens
txt
2.3 KB
Actual file preview for Locale Separator and Digit Characters — literal specimens

Locale Separator and Digit Characters — literal specimens

Every separator, sign and digit set a locale-aware formatter has to survive, each present literally between ASCII guards: the no-break and narrow-no-break spaces, de-CH's U+2019 group separator, the Arabic decimal and thousands separators, the four numbering systems' digits, and CLDR's U+2212 MINUS SIGN, which is not the ASCII hyphen.

File
TXT · Formatting · UTF-8
Preview of JUnit XML — Escaped Characters in Test Names
xml
1 KB
Actual file preview for JUnit XML — Escaped Characters in Test Names

JUnit XML — Escaped Characters in Test Names

Test names containing &, <, >, quotes and an apostrophe, escaped as XML requires. Round-tripping this report through a converter is the fastest way to find double-escaping bugs that turn &amp; into &amp;amp; one hop at a time.

File
XML · Junit XML · UTF-8
Use case
Encoding detectionConversion testing+1· Conversion set
Preview of JUnit XML — Non-ASCII Test Names (UTF-8)
xml
1 KB
Actual file preview for JUnit XML — Non-ASCII Test Names (UTF-8)

JUnit XML — Non-ASCII Test Names (UTF-8)

Test names in German, French, Japanese, Greek and Russian, stored as UTF-8 with no BOM and an explicit encoding declaration. A reporter that assumes the platform default encoding produces mojibake here rather than an error.

File
XML · Junit XML · UTF-8
Use case
Encoding detectionInternationalization+1· Conversion set
Preview of JUnit XML — Locale-Formatted and Exponent Durations
xml
465 B
Actual file preview for JUnit XML — Locale-Formatted and Exponent Durations

JUnit XML — Locale-Formatted and Exponent Durations

Durations written four different ways in one file: scientific notation, a comma decimal separator from a German-locale JVM, a bare integer, and a comma that could be either a decimal point or a thousands separator. A parser using a locale-sensitive number reader gets a different answer depending on where it runs.

File
XML · Junit XML · UTF-8
Use case
Error handlingConversion testing+1· Conversion set
Preview of Gherkin — French Keywords (# language: fr)
feature
685 B
Actual file preview for Gherkin — French Keywords (# language: fr)

Gherkin — French Keywords (# language: fr)

A feature written entirely in French keywords, declared by the # language: fr header that must be the first line of the file. Parsers that hardcode English keywords read this as a feature with no scenarios rather than reporting an error, so it fails silently.

File
FEATURE · Bdd · fr
Use case
InternationalizationCode parsing+1· Conversion set
Preview of Unified Diff - CRLF Line Endings Throughout
diff
821 B
Actual file preview for Unified Diff - CRLF Line Endings Throughout

Unified Diff - CRLF Line Endings Throughout

Byte-for-byte the same diff as its LF twin except that every line ends CR LF, which is what a diff produced or saved on Windows looks like. Readers that compare a hunk line against expected content without stripping the CR find that no line matches.

File
DIFF · Diffs · UTF-8
Use case
Encoding detectionVisual diff / regression+1· Paired fixture
Preview of Unified Diff - LF Line Endings Throughout
diff
795 B
Actual file preview for Unified Diff - LF Line Endings Throughout

Unified Diff - LF Line Endings Throughout

The LF half of the line-ending twin pair: identical text content to the CRLF fixture, differing only in the terminator bytes. Diff the two downloads to see nothing but line-ending changes, and use the pair to score end-of-line normalisation.

File
DIFF · Diffs · UTF-8
Use case
Encoding detectionVisual diff / regression+1· Paired fixture
Preview of Unified Diff - Line-Ending Conversion as Content Change
diff
260 B
Actual file preview for Unified Diff - Line-Ending Conversion as Content Change

Unified Diff - Line-Ending Conversion as Content Change

The file itself is LF-terminated, but every removed line carries a literal CR as its last character because the change under review is a CRLF-to-LF conversion. Renderers that do not show the CR display a hunk in which every removed and added line looks identical.

File
DIFF · Diffs · UTF-8
Preview of Unified Diff - Octal-Quoted Non-ASCII Paths
diff
263 B
Actual file preview for Unified Diff - Octal-Quoted Non-ASCII Paths

Unified Diff - Octal-Quoted Non-ASCII Paths

With git's default `core.quotepath`, a path containing non-ASCII bytes is wrapped in double quotes and each byte is written as a backslash-octal escape. A parser that takes the header text literally creates a directory called `caf\303\251` on disk.

File
DIFF · Diffs · UTF-8
Use case
Encoding detectionVisual diff / regression+1· Conversion set
Preview of Unified Diff - Raw UTF-8 Non-ASCII Paths
diff
235 B
Actual file preview for Unified Diff - Raw UTF-8 Non-ASCII Paths

Unified Diff - Raw UTF-8 Non-ASCII Paths

The same change with `core.quotepath=false`, so the path is written as raw UTF-8 and the header is not quoted. Compare with the quoted twin to confirm a parser resolves both spellings to the same file.

File
DIFF · Diffs · UTF-8
Use case
Encoding detectionVisual diff / regression+1· Conversion set
Preview of Git Patch - CRLF Line Endings Throughout
patch
1.2 KB
Actual file preview for Git Patch - CRLF Line Endings Throughout

Git Patch - CRLF Line Endings Throughout

The whole patch file uses CRLF terminators, as it would after a round trip through a Windows editor or a mail client. `git am` needs `--keep-cr` to be told the CRs belong to the patch rather than to the content, and the `-- ` signature line now ends with space-CR-LF.

File
PATCH · Patches · UTF-8
Use case
Encoding detectionVisual diff / regression+1· Paired fixture
Preview of Git Patch - LF Line Endings Throughout
patch
1.2 KB
Actual file preview for Git Patch - LF Line Endings Throughout

Git Patch - LF Line Endings Throughout

The LF half of the patch twin pair, identical in text content to the CRLF fixture. Diff the two downloads to get a change that is invisible in every renderer and fatal to a byte comparison.

File
PATCH · Patches · UTF-8
Use case
Encoding detectionVisual diff / regression+1· Paired fixture
Preview of Gitattributes - End-of-Line Normalisation Rules
gitattributes
477 B
Actual file preview for Gitattributes - End-of-Line Normalisation Rules

Gitattributes - End-of-Line Normalisation Rules

The attribute file that decides what happens to line endings on checkout: `text=auto` as the default, explicit `eol=lf` and `eol=crlf` overrides, the `binary` macro that expands to `-text -diff`, and one `-text` entry that is still given a textconv driver. This is the file whose absence causes the CRLF twins elsewhere in this category.

File
GITATTRIBUTES · Repo Config · UTF-8
Preview of Prometheus Exposition — Label Value Escaping Edge Cases (prom)
prom
681 B
Actual file preview for Prometheus Exposition — Label Value Escaping Edge Cases (prom)

Prometheus Exposition — Label Value Escaping Edge Cases (prom)

Ten series whose label values contain the characters that break naive line splitting — escaped quotes and backslashes, an escaped newline, non-ASCII text, braces, commas, equals signs, a leading hash and significant whitespace. The exposition format defines exactly three escapes and this file uses all of them.

File
PROM · Metrics
Use case
ObservabilityEncoding detection+1· Conversion set
Preview of Prometheus Exposition — UTF-8 Quoted Metric and Label Names (prom)
prom
1000 B
Actual file preview for Prometheus Exposition — UTF-8 Quoted Metric and Label Names (prom)

Prometheus Exposition — UTF-8 Quoted Metric and Label Names (prom)

Dotted OpenTelemetry-style metric and label names written with the quoted-name syntax that Prometheus 3 accepts, mixed in one document with a legacy underscore-named family. The fixture for parsers that still assume every name matches [a-zA-Z_][a-zA-Z0-9_]*.

File
PROM · Metrics
Use case
ObservabilityEncoding detection+1· Conversion set
Preview of Structured Log — Ten Timestamp Formats, One Instant (jsonl)
jsonl
961 B
Actual file preview for Structured Log — Ten Timestamp Formats, One Instant (jsonl)

Structured Log — Ten Timestamp Formats, One Instant (jsonl)

The same instant written ten ways — RFC 3339 at three precisions and with a non-UTC offset, epoch seconds as integer and float, epoch milliseconds and nanoseconds, Common Log Format and the log4j comma-decimal form. What a timestamp autodetector must resolve to one moment.

File
JSONL · Logs
Use case
ObservabilityLog parsing+1· Conversion set
Preview of Structured Log — Unicode, RTL, Emoji and Control Characters (jsonl)
jsonl
888 B
Actual file preview for Structured Log — Unicode, RTL, Emoji and Control Characters (jsonl)

Structured Log — Unicode, RTL, Emoji and Control Characters (jsonl)

Log messages in Latin, Japanese and Arabic scripts, an emoji flag and a zero-width-joiner family, NFC and NFD forms of the same accented letter, and escaped tab, newline and carriage return. Everything that makes a log line's byte length and its display width disagree.

File
JSONL · Logs · UTF-8, unescaped
Use case
ObservabilityLog parsing+1· Conversion set
Preview of Structured Log — Lone Surrogate Escapes, Intentionally Invalid (jsonl)
jsonl
479 B
Actual file preview for Structured Log — Lone Surrogate Escapes, Intentionally Invalid (jsonl)

Structured Log — Lone Surrogate Escapes, Intentionally Invalid (jsonl)

Two records containing unpaired \ud800 and \udfff escapes between three well-formed ones, plus a correct surrogate pair for comparison. Intentionally invalid: the escapes are syntactically legal JSON but cannot be encoded as UTF-8, which is where a re-serialising pipeline breaks.

File
JSONL · Logs
Use case
ObservabilityEncoding detection+1· Conversion set
Preview of Plain-Text Log — ANSI Colour Codes in the Stream (log)
log
623 B
Actual file preview for Plain-Text Log — ANSI Colour Codes in the Stream (log)

Plain-Text Log — ANSI Colour Codes in the Stream (log)

A developer-mode log where the level and service are wrapped in ANSI colour codes, ending with one uncoloured line. Colour codes sit inside the field a parser wants to read, so level extraction fails unless the sequences are stripped first — the classic symptom of a container run without a TTY check.

File
LOG · Logs
Use case
ObservabilityLog parsing+1· Conversion set
Preview of Plain-Text Log — Mixed CRLF and LF Line Endings (log)
log
500 B
Actual file preview for Plain-Text Log — Mixed CRLF and LF Line Endings (log)

Plain-Text Log — Mixed CRLF and LF Line Endings (log)

One log file written by two agents, four lines ending CRLF and three LF, with one line carrying trailing spaces before its break. Splitting on \n alone leaves a stray carriage return at the end of four fields, which is how a level or status ends up with an invisible character attached.

File
LOG · Logs
Use case
ObservabilityLog parsing+1· Conversion set
Preview of Plain-Text Log — NUL, Control Bytes and Invalid UTF-8 (log)
log
421 B
Actual file preview for Plain-Text Log — NUL, Control Bytes and Invalid UTF-8 (log)

Plain-Text Log — NUL, Control Bytes and Invalid UTF-8 (log)

Five log lines carrying a NUL byte, bell, backspace, vertical tab and form feed, plus one 0xFF byte that is not valid UTF-8 — the debris that arrives when binary data reaches a log field. Deliberately contains no terminal-escape sequences, only inert control bytes.

File
LOG · Logs
Use case
ObservabilityLog parsing+1· Conversion set
Preview of logfmt — Quoting, Escaping and Bare-Key Edge Cases (log)
log
882 B
Actual file preview for logfmt — Quoting, Escaping and Bare-Key Edge Cases (log)

logfmt — Quoting, Escaping and Bare-Key Edge Cases (log)

logfmt lines built to break naive splitting on spaces and equals signs: a value containing an equals sign, escaped quotes, a trailing backslash before the closing quote, a bare key with no value, duplicate keys, non-ASCII values and one unterminated quote followed by a clean line.

File
LOG · Logs
Use case
ObservabilityLog parsing+1· Conversion set
Preview of Profile — Demangled Symbols That Break the Folded Format (txt)
txt
618 B
Actual file preview for Profile — Demangled Symbols That Break the Folded Format (txt)

Profile — Demangled Symbols That Break the Folded Format (txt)

Demangled C++ templates, Rust trait impls, Java generics, lambdas and unresolved hex addresses in the folded format — including one symbol containing a semicolon, which the format has no way to escape. That line is genuinely ambiguous, and how a parser handles it is the point.

File
TXT · Profiles
Use case
ObservabilityLog parsing+1· Conversion set
Preview of CycloneDX SBOM With Unicode Metadata (Edge Case)
json
11.6 KB
Actual file preview for CycloneDX SBOM With Unicode Metadata (Edge Case)

CycloneDX SBOM With Unicode Metadata (Edge Case)

A CycloneDX SBOM whose author names and properties contain accented Latin, CJK, right-to-left Hebrew, emoji and a deliberately long property value — for testing encoding handling and field-width assumptions. Every package, version, hash and licence is fictional — the tree describes nothing real.

File
JSON · Sbom · UTF-8 (no BOM)
Use case
JSON parsingEncoding detection+1· Conversion set
Preview of GeoJSON — Non-ASCII Property Values
geojson
1.5 KB
Actual file preview for GeoJSON — Non-ASCII Property Values

GeoJSON — Non-ASCII Property Values

Four features whose labels are written in Latin with diacritics, katakana, right-to-left Arabic, and a decomposed combining sequence — all stored as raw UTF-8 rather than \u escapes. Shapefile DBF export is where these usually turn into question marks.

File
GEOJSON · Geojson · UTF-8
Use case
GeospatialEncoding detection+1· Conversion set
Preview of NMEA 0183 — LF Line Endings Instead of CRLF
nmea
930 B
Actual file preview for NMEA 0183 — LF Line Endings Instead of CRLF

NMEA 0183 — LF Line Endings Instead of CRLF

The same sentences terminated with a bare LF rather than the CR LF the standard mandates — what you get after a log passes through a text editor or a Unix pipeline. Parsers that strip only "\r\n" leave a stray character on every line and then fail the checksum.

File
NMEA · Nmea · ASCII
Use case
GeospatialError handling+1· Conversion set
Preview of Shapefile — Code Page Sidecar (.cpg, UTF-8)
cpg
6 B
Actual file preview for Shapefile — Code Page Sidecar (.cpg, UTF-8)

Shapefile — Code Page Sidecar (.cpg, UTF-8)

A one-line sidecar naming the encoding of the .dbf. Without it a reader has to guess — usually cp1252 — and every non-ASCII attribute value comes back as mojibake, which is the single most common shapefile data-loss bug.

File
CPG · Shapefile
Use case
GeospatialEncoding detection+1· Conversion set
Preview of Shapefile DBF — Accented Attributes in UTF-8
dbf
374 B
Actual file preview for Shapefile DBF — Accented Attributes in UTF-8

Shapefile DBF — Accented Attributes in UTF-8

The same four accented attribute rows written in UTF-8. Both files are exactly the same size because DBF fields are fixed-width in bytes, not characters — so the UTF-8 table fits fewer characters per field, and a reader that guesses the encoding produces mojibake rather than an obvious failure.

File
DBF · Shapefile · 4 records
Use case
GeospatialEncoding detection+1· Conversion set
Preview of Shapefile Code Page — UTF-8 Declaration
cpg
6 B
Actual file preview for Shapefile Code Page — UTF-8 Declaration

Shapefile Code Page — UTF-8 Declaration

The sidecar that declares `attributes-utf8.dbf` as UTF-8. Note that the DBF also carries a language-driver byte in its header, and the two can disagree — which is exactly the ambiguity a reader has to resolve and document.

File
CPG · Shapefile
Use case
GeospatialEncoding detection+1· Conversion set
Preview of Shapefile DBF — Accented Attributes in CP1252
dbf
374 B
Actual file preview for Shapefile DBF — Accented Attributes in CP1252

Shapefile DBF — Accented Attributes in CP1252

The same four accented attribute rows written in CP1252. Both files are exactly the same size because DBF fields are fixed-width in bytes, not characters — so the UTF-8 table fits fewer characters per field, and a reader that guesses the encoding produces mojibake rather than an obvious failure.

File
DBF · Shapefile · 4 records
Use case
GeospatialEncoding detection+1· Conversion set
Preview of Shapefile Code Page — ISO-8859-1 Declaration
cpg
11 B
Actual file preview for Shapefile Code Page — ISO-8859-1 Declaration

Shapefile Code Page — ISO-8859-1 Declaration

The sidecar that declares `attributes-cp1252.dbf` as ISO-8859-1. Note that the DBF also carries a language-driver byte in its header, and the two can disagree — which is exactly the ambiguity a reader has to resolve and document.

File
CPG · Shapefile
Use case
GeospatialEncoding detection+1· Conversion set
Preview of WKB — Hex Strings in Both Byte Orders
txt
332 B
Actual file preview for WKB — Hex Strings in Both Byte Orders

WKB — Hex Strings in Both Byte Orders

The same point encoded both ways, plus a polygon, as uppercase hex — the form WKB takes when it travels through a text column or a SQL console. The byte-order flag is the first byte of each string, so the two point encodings differ everywhere after it.

File
TXT · Wkt Wkb · 3 records
Use case
GeospatialSerialization testing+1· Conversion set
Preview of HDF5 Strings — Fixed, Variable-Length and UTF-8 (.h5)
h5
8.1 KB
Actual file preview for HDF5 Strings — Fixed, Variable-Length and UTF-8 (.h5)

HDF5 Strings — Fixed, Variable-Length and UTF-8 (.h5)

Fixed-width byte strings, variable-length UTF-8 strings and UTF-8 attribute text in one file, including Greek, CJK and combining diacritics. HDF5 hands fixed-width strings back as padded bytes and variable-length ones as decoded text, and conflating the two is where string handling usually breaks.

File
H5 · Hdf5 · UTF-8
Use case
Scientific dataSerialization testing+1· Conversion set
Preview of NumPy .npy Format Version 3.0 — UTF-8 Field Names (.npy)
npy
312 B
Actual file preview for NumPy .npy Format Version 3.0 — UTF-8 Field Names (.npy)

NumPy .npy Format Version 3.0 — UTF-8 Field Names (.npy)

A structured array whose field names use Greek and CJK characters, which is the only reason format version 3.0 exists: its header is UTF-8 where 1.0 and 2.0 are latin-1. A parser that decodes the header as latin-1 mangles all three names.

File
NPY · Arrays · 5 records
Use case
Scientific dataSerialization testing+1· Conversion set
Preview of SI Unit Symbols in UTF-8 — Look-Alike Codepoints (.csv)
csv
556 B
Actual file preview for SI Unit Symbols in UTF-8 — Look-Alike Codepoints (.csv)

SI Unit Symbols in UTF-8 — Look-Alike Codepoints (.csv)

Eight measurements whose unit symbols use the codepoints that have Unicode look-alikes: MICRO SIGN against GREEK MU, OHM SIGN against GREEK OMEGA, ANGSTROM SIGN against A-with-ring. Each row also carries an ASCII fallback, so a normalisation bug shows up as a column mismatch rather than as an invisible change.

File
CSV · Measurements · 8 rows
Use case
Scientific dataEncoding detection+1· Conversion set
Preview of GitHub Actions on: Key YAML Boolean Trap
yml
720 B
Actual file preview for GitHub Actions on: Key YAML Boolean Trap

GitHub Actions on: Key YAML Boolean Trap

The workflow file that exposes the YAML 1.1 boolean resolver: a bare `on` key becomes True in PyYAML, SnakeYAML and Psych, so a round-trip through those loaders loses the trigger block. The env values repeat the trap with NO, yes and off alongside a quoted control.

File
YML · Github Actions
Preview of GitLab CI Anchors and Extends
yml
814 B
Actual file preview for GitLab CI Anchors and Extends

GitLab CI Anchors and Extends

The two GitLab inheritance mechanisms in one file: YAML anchors with merge keys, which the loader resolves before GitLab sees the document, and `extends`, which GitLab resolves afterwards with a deep merge. Hidden .job keys carry both.

File
YML · Gitlab Ci
Preview of GitLab CI !reference Custom YAML Tag
yml
732 B
Actual file preview for GitLab CI !reference Custom YAML Tag

GitLab CI !reference Custom YAML Tag

GitLab's `!reference` custom YAML tag used three ways: inside a script list, as a whole after_script value, and as a whole rules value. A stock YAML 1.2 loader has no constructor for it and raises; GitLab's loader resolves each key path.

File
YML · Gitlab Ci
Preview of Docker Compose Anchors and x- Extension Fields
yaml
1.1 KB
Actual file preview for Docker Compose Anchors and x- Extension Fields

Docker Compose Anchors and x- Extension Fields

Compose with three x- extension fields carrying YAML anchors that are merged into services. The trap is ordering: a tool that strips x- keys before parsing the YAML destroys the anchors and the file stops resolving.

File
YAML · Docker
Preview of YAML Anchors and Aliases
yaml
749 B
Actual file preview for YAML Anchors and Aliases

YAML Anchors and Aliases

Anchors and aliases across mapping, sequence and scalar nodes, including an anchor nested inside another anchored node. The point most tooling misses: an alias is a reference to the same node, so a shallow-loading parser can share mutable state between jobs.

File
YAML · YAML Edge Cases
Preview of YAML Merge Keys and Precedence
yaml
915 B
Actual file preview for YAML Merge Keys and Precedence

YAML Merge Keys and Precedence

Merge keys with their full precedence rules: local keys beat merged ones, and in a merge sequence the earlier alias wins. The file publishes the expected merged values, and a strict YAML 1.2 loader produces none of them because 1.2 dropped << from the core schema.

File
YAML · YAML Edge Cases
Preview of YAML Block Scalars and Chomping Indicators
yaml
1.1 KB
Actual file preview for YAML Block Scalars and Chomping Indicators

YAML Block Scalars and Chomping Indicators

Every block-scalar variation in one file: literal and folded styles, all three chomping indicators, an explicit indentation indicator, a folded block with a paragraph break, and an embedded shell-shaped script whose own indentation must survive.

File
YAML · YAML Edge Cases
Preview of YAML Norway Problem (Boolean Coercion)
yaml
916 B
Actual file preview for YAML Norway Problem (Boolean Coercion)

YAML Norway Problem (Boolean Coercion)

The Norway problem in full: eleven bare words that a YAML 1.1 resolver turns into booleans, a matching quoted control group that survives, and a country-code list where position two silently becomes false. The definitive fixture for resolver-version behaviour.

File
YAML · YAML Edge Cases
Preview of YAML Implicit Typing Traps
yaml
1 KB
Actual file preview for YAML Implicit Typing Traps

YAML Implicit Typing Traps

Twenty-two unquoted values whose type depends entirely on the resolver. The worst is the leading zero: 0755 is 493 under YAML 1.1 and 755 under YAML 1.2, so both resolvers return a number and they return different ones. Also covers base-60 times, a version that loses its trailing zero, an integer past IEEE-754 precision, dates, and .inf / .nan.

File
YAML · YAML Edge Cases
Preview of YAML Duplicate Keys
yaml
708 B
Actual file preview for YAML Duplicate Keys

YAML Duplicate Keys

Duplicate keys at three nesting levels, including a duplicated top-level sequence. The spec forbids them; most loaders keep the last silently, a few keep the first, and strict linters reject the document. The file publishes the last-wins answer.

File
YAML · YAML Edge Cases
Preview of YAML Multi-Document Stream
yaml
587 B
Actual file preview for YAML Multi-Document Stream

YAML Multi-Document Stream

A five-document stream with explicit end markers, a comment-only document that loads as null, and a bare sequence as a whole document. The single-document API returns only the first, which is how multi-object manifests silently lose objects.

File
YAML · YAML Edge Cases
Preview of YAML Null and Empty Values
yaml
564 B
Actual file preview for YAML Null and Empty Values

YAML Null and Empty Values

Five spellings of null against the things routinely confused with it: empty strings, empty collections, and a key written with no value at all. Includes a sequence containing a hole, an empty string and two nulls in a row.

File
YAML · YAML Edge Cases
Preview of YAML Quoting Styles and Escapes
yaml
1.1 KB
Actual file preview for YAML Quoting Styles and Escapes

YAML Quoting Styles and Escapes

All three scalar quoting styles side by side: plain scalars and what they cannot contain, single quotes where backslashes stay literal and '' means one quote, and double quotes as the only style that processes \t, \n and \uXXXX escapes.

File
YAML · YAML Edge Cases
Preview of YAML Flow and Block Styles
yaml
750 B
Actual file preview for YAML Flow and Block Styles

YAML Flow and Block Styles

Flow (JSON-like) and block collections expressing the same structures, nested inside one another in both directions, plus a flow mapping wrapped across lines and a line of strict JSON — which is valid YAML, and a useful check on a parser's JSON-subset claim.

File
YAML · YAML Edge Cases
Preview of YAML Indentation Variants
yaml
640 B
Actual file preview for YAML Indentation Variants

YAML Indentation Variants

The indentation styles that all parse identically and that formatters fight over: sequences flush with their key versus indented under it, two-space against four-space maps, and deliberately irregular but legal nesting. For testing formatters and idempotency.

File
YAML · YAML Edge Cases
Preview of YAML Non-ASCII Keys and Values
yaml
719 B
Actual file preview for YAML Non-ASCII Keys and Values

YAML Non-ASCII Keys and Values

Non-ASCII keys and values across Latin, Cyrillic, Arabic, CJK and emoji, plus a key containing a zero-width space and a value distinguishing a combining acute from the precomposed character. Written as UTF-8 with no BOM.

File
YAML · YAML Edge Cases · UTF-8, no BOM
Preview of YAML with CRLF Line Endings
yaml
651 B
Actual file preview for YAML with CRLF Line Endings

YAML with CRLF Line Endings

A YAML file written with CRLF line endings, which the spec accepts as a line break. A parser that splits on \n alone leaves a stray carriage return at the end of every plain scalar, so "build" becomes "build\r" and equality checks quietly fail.

File
YAML · YAML Edge Cases · UTF-8, no BOM
Preview of YAML with a UTF-8 Byte Order Mark
yaml
370 B
Actual file preview for YAML with a UTF-8 Byte Order Mark

YAML with a UTF-8 Byte Order Mark

A YAML file beginning with a UTF-8 byte order mark, which the spec permits at the start of a stream. A parser that does not strip it reads the first key as \ufeffname, so the lookup misses and the document appears to be missing its name field.

File
YAML · YAML Edge Cases · UTF-8 with BOM
Preview of YAML Bounded Anchor Reuse
yaml
648 B
Actual file preview for YAML Bounded Anchor Reuse

YAML Bounded Anchor Reuse

Nested anchor reuse kept deliberately small: two anchors, six references, thirty-one expanded nodes. It is here to test alias resolution and expansion accounting on a safe input, and is explicitly not a billion-laughs expansion bomb.

File
YAML · YAML Edge Cases
Preview of YAML Explicit and Local Tags
yaml
778 B
Actual file preview for YAML Explicit and Local Tags

YAML Explicit and Local Tags

Explicit tags across the standard set — !!str, !!float, !!int, !!bool, !!null, !!binary, !!timestamp, !!omap, !!set — alongside two application-local ! tags. CI dialects use local tags in the wild, so a pipeline parser has to decide whether to reject, ignore, or resolve them.

File
YAML · YAML Edge Cases
Preview of YAML Directives and Comments
yaml
658 B
Actual file preview for YAML Directives and Comments

YAML Directives and Comments

A two-document stream where each document declares its own %YAML directive and the second adds a %TAG handle used by a local tag. Comments appear in every position they are legal, and every one of them is lost by a non-round-tripping loader.

File
YAML · YAML Edge Cases