Cross-platform tool for VHS teletext recovery, developed with OpenAI
Codex.
Capture VBI, deconvolve and restore teletext from VHS tapes all in one cross-platform GUI application.
Deconvolve data in real time and see teletext in the precise moment on the tape that's playing.
No need to store data to disk and separately deconvolve it later. Do it all in one pass.
Or better yet, hot swap tapes to quickly date taped broadcasts.
Of course raw VBI can be stored for preservation if needed.
Teletext recovery is a niche kind of digital archaeology. If TeletextRecoveReese helps you rescue a few more pages from VHS noise, corruption, or an imperfect broadcast capture, consider supporting its continued development.
Your support helps me spend more time on better restoration tools, faster and simpler recovery workflows, broader compatibility, and reliable cross-platform releases.
Every recovered page is a small piece of broadcasting history that might otherwise disappear. Thank you for helping keep the work moving.
- Inspect full broadcast captures.
- Import DVB teletext services directly from
.ts,.mts, and.m2tsrecordings. - Compare every version of a page, subpage, row, or selected block.
- Restore good rows and blocks into a separate editable page.
- Edit text, mosaics, control codes, national subsets, and X/26 diacritics.
- Build a new squashed stream with configurable recovery filters.
- Export restored work as
.t42, PNG screenshots, or video. - Run on Windows, macOS, and Linux.
The editor uses one or two synchronized panes:
- Squashed / single page — editable restoration result on the left.
- Full broadcast — read-only source capture on the right.
- Browse by magazine, page, subpage, and captured version.
- Use fast version buttons for direct selection and hover preview.
- Use Flash Roll to cycle all versions rapidly for visual comparison.
- Show control-code bytes and hexadecimal values directly in the grid.
- Show raw bytes across the complete current selection.
- Toggle X/26 diacritic markers only when they are needed.
- Keep the broadcast pane read-only to protect the source capture.
- Transfer any complete row from the broadcast into the squashed page.
- Select a block, hold
Shift, and useLeft/Rightto browse that block through every broadcast version. - Commit the final block as one undoable edit when
Shiftis released. - Copy a broadcast selection directly into the same position on the left.
- Undo and redo independently for each restored page.
- Add or delete pages and subpages.
- Jump between matching pages in the two panes.
- Type directly into the editable 40 × 25 grid.
- Insert all Level 1 alpha and mosaic colours.
- Edit mosaic cells with the six Teletext mosaic keys.
- Choose the G0 national subset for the complete file or leave it on Auto.
- Type supported precomposed letters as a G0 base character plus X/26 enhancement.
- Create, move, and delete Level 1.5 diacritics.
- Drag and drop a diacritic to another cell.
- Preserve existing raw enhancement chains when inserting new characters.
- Replace unusable triplets without discarding unrelated enhancement data.
- Inspect X/26 packets and decoded triplets in the enhancements sidebar.
- Delete an individually selected triplet with undo support.
- Create a squashed stream directly from an open full broadcast using filters.
- Build consensus rows from repeated receptions and parity quality.
- Preserve X/26 packets selected from the available versions.
- Optionally keep every live-capture VBI line as a vhs-teletext-compatible all-zero T42 slot when no packet can be recovered.
- Apply edited squashed pages back to every matching Full Broadcast occurrence without moving line-aware slots or overwriting the archival source file.
- Add a bookmark to any restored page or subpage.
- Restore bookmarks when the same file is opened in a later session.
- Generate timestamp, page, subpage, and bookmark text after video export.
- Choose any installed grid font; TIFAX is recommended.
- Simulate Teletext flash with a real timer.
- Move all three toolbars below the grids with View > Toolbar on Bottom.
- Show or hide the X/26 and page-bookmark sidebar sections.
- Optionally link the two visual halves of a double-height cell so selecting the lower half edits its rendered upper source cell.
- Remember display toggles, font, recent files, panes, selected pages, and video settings between sessions.
- Reopen up to ten recent files in the pane and page where they were last used.
- Save the restored result as raw
.t42packets. - Export the current page as a PNG screenshot.
- Batch-export every restored page as PNG.
- Export a sequence of pages as video through FFmpeg.
FFmpeg must be available on the system to use the video export feature.
Use Ctrl on Windows/Linux and Cmd on macOS.
| Shortcut | Action |
|---|---|
Ctrl/Cmd + O |
Open a squashed or single-page stream |
Ctrl/Cmd + S |
Save the restored stream |
Ctrl/Cmd + N |
Create a new page |
Ctrl/Cmd + C |
Copy the current cell or block |
Ctrl/Cmd + Shift + C |
Copy a broadcast block directly into the same position on the left |
Ctrl/Cmd + V |
Paste into the editable grid |
Ctrl/Cmd + Z |
Undo the current page edit |
Ctrl/Cmd + Shift + Z |
Redo the current page edit |
Arrow keys |
Move the active grid selection |
Shift + Left/Right |
Browse broadcast versions of the selected restoration block |
Backspace |
Clear the previous editable cell |
Enter |
Move to column 0 of the next row |
Q A Z W S X |
Toggle mosaic segments while editing a mosaic cell |
Shift + transfer-row click |
Pin or unpin the row guide |
Typing advances automatically through the editable grid. When the page-bookmark text field has focus, all typing and cursor keys remain inside that field.
- Raw sequence of 42-byte Teletext packets.
- Original packet data is preserved wherever possible during restoration.
- Line-aware captures use an all-zero 42-byte positional placeholder compatible
with
vhs-teletext --keep-empty; squashed exports omit those placeholders.
- MPEG-TS and M2TS imports locate valid DVB teletext PES services automatically.
- EN 300 472 data units are converted directly to T42 without rendering, OCR, or video transcoding.
dotnet restore
dotnet run --project TeletextRecoveReeseBuild the complete solution:
dotnet build TeletextRecoveReese.slnRestore the previous session at startup:
dotnet run --project TeletextRecoveReese -- -loadlastExplicitly start a new session at startup:
dotnet run --project TeletextRecoveReese -- -startnew- Current development version: 0.9 beta
- Actively developed and used for real restoration work.
- Core
.t42loading, comparison, editing, squashing, and export are available. - Complete EN 300 706 coverage and broader interoperability testing are ongoing.
- Licensed under GPL-3.0.
TeletextRecoveReese would not have been possible without the ideas, concepts, and practical solutions demonstrated by these projects:
- Teletext Meddler — page restoration, version comparison, control-code inspection, and the idea that recovered captures deserve a purpose-built editor.
- QTeletextMaker — Level 2.5 page authoring and a valuable reference point for X/26 enhancement editing.
- Teletext Recovery Editor — service-oriented recovery workflows, carousel handling, and restoration-focused page management.
- vhs-teletext — the recovery and
.t42toolchain that made large-scale VHS Teletext preservation practical.
Thanks to their respective authors and contributors for building the foundations, solving hard problems, and sharing their work with the Teletext preservation community.