A macOS app that combines NTSC/VHS signal emulation (ntsc-rs) with RetroArch CRT shaders to make images and videos look like they are playing on a 1980s TV.

Stars

94

7-day growth

No data

Forks

12

Open issues

0

License

No data

Last updated

2026-07-28

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It seamlessly bridges two excellent open-source projects (ntsc-rs and RetroArch shaders) into a native Mac interface with keyframe animation and deterministic export, making authentic retro TV effects accessible to creators without requiring command-line or complex setups.

Who it is for

  • macOS users (Apple Silicon/Intel) seeking retro video aesthetics
  • Vintage game enthusiasts and pixel artists
  • Video editors and motion designers
  • Demoscene or retro computing hobbyists

Use cases

  • Creating retro game footage with authentic CRT and VHS effects
  • Adding analog TV degradation to modern video projects
  • Animating still images into vintage-style video with keyframes
  • Exporting retro-styled GIFs for social media or web use

Strengths

  • Seamless integration of ntsc-rs analog signal emulation and RetroArch CRT shaders in one pipeline
  • Keyframe animation system for the entire effect chain, enabling complex retro video creations
  • Export to H.264, HEVC, ProRes, and animated GIF with deterministic output (same settings = same pixels)
  • Comprehensive control over NTSC parameters (60+ settings) and 7 CRT shader presets with runtime parameters

Considerations

  • NTSC stage runs on CPU at source full resolution; 4K+ sources cause preview frame drops during animation or playback
  • Intel build is community-tested, not author-tested
  • No undo functionality; users should save presets before experiments
  • Some CRT shader parameters are compile-time disabled (static) and ineffective

README quick start

NTSCRT

Make any image or video look like it's playing on a 1980s TV. NTSCRT runs your media through a real analog signal emulation (ntsc-rs — composite artifacts, tape noise, head switching) and then through RetroArch's CRT shaders (via librashader — scanlines, phosphor masks, glow), frame-identical to RetroArch itself.

Full disclosure: this is two much better projects hacked together. All of the actual image magic belongs to ntsc-rs and the RetroArch shader community; NTSCRT is the native Mac interface that connects them into one pipeline:

your image/video → NTSC/VHS signal degradation (full res) → downscale to retro resolution → CRT shader → screen

Download

Grab the DMG from Releases, open it, and drag NTSCRT to Applications.

Requirements: macOS 14 or later. The app is a universal binary (Apple Silicon + Intel).

Intel note: I build and test NTSCRT on Apple Silicon and haven't personally tested the Intel build. Intel support exists thanks to a contributed fix (#1) verified by its author on an Intel iMac Pro — if something misbehaves on your Intel Mac, please open an issue.

Using the app

Toolbar — file actions live in the window toolbar: Open (⌘O) an image (PNG/JPEG/HEIC) or video (MP4/MOV), save/load a Preset (your entire configuration as a JSON file — downscale, VHS, shader, view, and the whole timeline: duration, frame rate and every keyframe), or pick one of the bundled presets listed underneath — loading one that carries keyframes opens the timeline so you can see the animation it brought with it, and Export (⌘E): stills to PNG; videos to H.264/HEVC .mp4, ProRes .mov (with audio), or animated GIF, at your choice of resolution and quality. Scanline detail is brutal on lossy codecs — use the High/Very high quality tiers, or ProRes when it's headed into an edit. Exports are deterministic: same settings + same frame = same pixels.

Scanline banding. CRT shaders draw scanlines in output pixels, so if the export height isn't a whole multiple of the downscale height, one source line covers a fractional number of rows and the scanlines group into visible bands. Exports handle this automatically — they render at a whole multiple and average down — so you ca

Description

Vintage analog TV/VHS image tool for macOS: ntsc-rs signal emulation + RetroArch CRT shaders (librashader), glued together with SwiftUI/Metal

Related repositories

Similar projects matched by category, topics, and programming language.

Blaizzy
Featured
Blaizzy GitHub avatar

nativ

Nativ is a native macOS app that lets you run AI models locally on Apple silicon, offering chat, model management, performance analytics, and an OpenAI/Anthropic-compatible API server.

AI & Machine LearningAI Vision & Audio
985
uzairansaruzi
Featured
uzairansaruzi GitHub avatar

hermex

Hermex is a native SwiftUI iPhone app that lets you control a self-hosted Hermes AI agent directly from your phone, with no subscriptions, tracking, or third-party relay.

AI & Machine LearningLarge Language Models
941
simonw
Featured
simonw GitHub avatar

speech-analyzer-cli

A macOS command-line tool that uses Apple's on-device speech APIs to transcribe prerecorded audio into plain text, JSON, JSONL, SRT, or WebVTT.

Developer ToolsCLI & Terminal
20