Test files › Structured data

Sample Structured data test files

Free structured data test files for QA and developers: 1million-rows.csv, bom-and-semicolons.csv, formula-injection.csv, quoting-nightmare.csv, ragged-rows.csv, valid-simple.csv and more. Each with a published SHA-256 and a note on what it catches.

FileFormatSizeWhat it catches
1million-rows.csvCSV34.1 MB1,000,000 data rows, roughly 65 MB. Exceeds the Excel worksheet row limit of 1,048,576 minus headers.
bom-and-semicolons.csvCSV124 bytesUTF-8 BOM, semicolon delimiters and comma decimal separators - the format Excel produces in most European locales.
formula-injection.csvCSV357 bytesCells beginning with =, +, -, @ and tab, which spreadsheet applications interpret as formulas. The payloads are non-destructive: they reference HYPERLINK and a harmless calculation.
quoting-nightmare.csvCSV407 bytesEvery RFC 4180 quoting edge case in one file: embedded commas, embedded newlines inside quoted fields, escaped double quotes, leading and trailing whitespace, and empty fields.
ragged-rows.csvCSV123 bytesRows with too few and too many columns relative to the header.
valid-simple.csvCSV4.3 KBHeader row plus 100 rows of clean, unquoted ASCII data.
deeply-nested-100000.jsonJSON195 KBA single value wrapped in 100,000 levels of nested arrays. Only ~200 KB on disk.
large-array-100mb.jsonJSON100 MBRoughly 100 MB single JSON array of ~400,000 uniform record objects.
malformed-trailing-comma.jsonJSON24 bytesJSON with a trailing comma before the closing brace - invalid per RFC 8259.
ndjson-10000-lines.ndjsonNDJSON654 KBNewline-delimited JSON, 10,000 records, one object per line.
precision-loss.jsonJSON319 bytesIntegers and decimals that exceed IEEE-754 double precision: 64-bit IDs, high-precision decimals, and values at MAX_SAFE_INTEGER boundaries.
valid-small.jsonJSON382 bytesWell-formed JSON object with nested arrays, nulls, booleans, unicode and escaped characters.
billion-laughs.xmlXML794 bytesClassic entity-expansion bomb: nine levels of entities each referencing the previous ten times. Under 1 KB on disk, expands to ~1 GB of text if entity expansion is unbounded.
unclosed-tag.xmlXML51 bytesXML with a tag that is never closed.
valid.xmlXML395 bytesWell-formed XML with namespaces, attributes, CDATA and a comment.
xxe-file-disclosure.xmlXML141 bytesXML declaring an external entity that reads a local file. Targets /etc/hostname - deliberately innocuous rather than /etc/passwd.
norway-problem.yamlYAML161 bytesYAML 1.1 implicit-typing traps: unquoted NO becomes false, unquoted YES becomes true, version strings become floats, and leading-zero values parse as octal.
tabs-invalid.yamlYAML34 bytesYAML indented with tab characters, which the specification forbids.

← All test files