📜 NFO File Viewer

📜 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.

Selected Files ({{ selectedFiles.length }})
Total Files: {{ fileCount }} Total Size: {{ formatFileSize(totalSize) }}

🔤 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 .ans files 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

Ready