📜 Select an NFO / DIZ file
Drop file here! Drag and drop an .nfo or .diz file here
or
CP437 → Unicode decoding runs locally — the file never leaves your browser.
🔤 Decode mode
CP437 is the right choice for classic scene NFOs. Use UTF-8 only if you know the file was authored in a modern editor.
🖥️ Terminal palette
⚙️ Actions
Copies / downloads use the currently-decoded Unicode text, not the original CP437 bytes.
📤 Rendered NFO
{{ primaryOutput }}
🔎 File Info
- File name
- {{ fileName || '—' }}
- Byte count
- {{ fileByteCount ? fileByteCount.toLocaleString() : '—' }}
- Line count
- {{ hasResult ? lineCount.toLocaleString() : '—' }}
- First 16 bytes (hex)
- {{ hexPreview || '—' }}
Hex preview is useful when an NFO renders strangely — comparing the first bytes against the CP437 chart tells you whether the file is really CP437 or already UTF-8 / UTF-16.
ℹ️ About NFO File Viewer
What this tool does
NFO File Viewer renders a classic .nfo,
.diz, or .asc file in the browser by
decoding each byte through a 256-entry
IBM Code Page 437
(CP437) → Unicode lookup table. The result is the same ASCII art
that DOS users saw in type or edit in
1992 — box drawing borders, shaded fills (░ ▒ ▓ █),
arrows, suit symbols, and the rest of the IBM PC ROM character
set — but rendered with modern Unicode glyphs.
The file never leaves your browser. The page reads it with
FileReader.readAsArrayBuffer,
walks the bytes through an in-page lookup table, and renders
the text into a monospace <pre> styled like
a phosphor terminal. No network request is made; there is no
upload, no API endpoint, no telemetry.
Why CP437 and not UTF-8?
NFO and DIZ files were a fixture of the DOS-era scene release culture from the late 1980s onward. The IBM PC's BIOS used Code Page 437 as its default character set, which assigned the upper 128 byte values (0x80–0xFF) to box drawing characters, shaded blocks, accented Latin letters, and mathematical symbols — exactly the palette scene artists used to draw decorative borders around their release notes.
Modern systems default to UTF-8. If you just cat
an NFO at a UTF-8 terminal, the box drawing bytes are reinterpreted
as invalid UTF-8 sequences and replaced with U+FFFD
(�) — the art turns into garbage. This viewer fixes
that by translating each byte through the canonical CP437 mapping
published by
unicode.org
before rendering.
Character ranges in the table
- 0x00–0x1F: IBM PC display glyphs that on other systems are ASCII control codes — smileys (
☺ ☻), card suits (♥ ♦ ♣ ♠), notes (♪ ♫), sun (☼), arrows (↑ ↓ → ← ↔ ↕), male/female (♂ ♀), pilcrow (¶), section (§), and more. NFO authors used these freely for decoration. - 0x09 / 0x0A / 0x0D: TAB / line feed / carriage return — passed through unchanged so multi-line layout survives.
- 0x20–0x7E: standard 7-bit ASCII — printable characters identical to Unicode 1:1.
- 0x7F: the house glyph (
⌂), not DEL. - 0x80–0x9F: accented Latin letters (Spanish, French, German, Scandinavian) plus a handful of currency symbols (
¢ £ ¥ ₧ ƒ). - 0xA0–0xAF: additional accented vowels, Spanish punctuation (
¿ ¡), ordinal indicators (ª º), guillemets (« »), and the fraction set (½ ¼). - 0xB0–0xDF: the heart of NFO art — light/medium/dark/full shaded blocks (
░ ▒ ▓ █) plus the complete box drawing repertoire for single and double-line borders (─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ ═ ║ ╔ ╗ ╚ ╝ ╠ ╣ ╦ ╩ ╬). - 0xE0–0xEF: lowercase Greek letters used in math expressions (
α β Γ π Σ σ µ τ Φ Θ Ω δ ∞ φ ε ∩). - 0xF0–0xFF: mathematical operators (
≡ ± ≥ ≤ ÷ ≈), degree sign (°), square root (√), superscript-n and squared (ⁿ ²), the full block square (■), and NBSP at 0xFF.
Decode modes
- Decode as CP437 (default) — every byte is looked up in the 256-entry CP437 → Unicode table. This is what an NFO file is supposed to look like.
- Raw UTF-8 — the bytes are passed to TextDecoder('utf-8') with replacement fallback. Useful for diagnosing files that turned out to already be UTF-8 (modern README-style NFOs) or for confirming why a CP437 file looks broken when treated as UTF-8.
Palette options
The viewer ships with three terminal phosphor looks — switch between them with the palette toggle. All three keep the same sharp monospace rendering; only the foreground/background pair changes:
- Green-on-black — the classic phosphor CRT look (default).
- Amber-on-black — the alternative high-end terminal phosphor of the early 1980s.
- White-on-near-black — modern paper-white VT100 look.
Limits and notes
- 256 KB cap. Classic scene NFOs are typically 2–20 KB. The cap is high enough for any reasonable file while keeping the page responsive.
- ANSI escape sequences are not interpreted. Some
.ansfiles carry ANSI X3.64 / ECMA-48 escape codes for colour. This viewer renders them literally because they are not part of CP437 — for animated ANSI art use a dedicated player. - SAUCE metadata is not parsed. If the file contains a trailing 128-byte SAUCE record, it will be rendered as well. Most NFO viewers do the same.
References
- Unicode.org — CP437.TXT — canonical byte-to-Unicode mapping used by this tool.
- Wikipedia — Code page 437 — historical context and full glyph chart.
- Wikipedia — .nfo file — origins of the format and how scene groups use it.
- SAUCE metadata specification — optional trailing record used by some art files.