UI95

CRT screen

A realistic CRT filter to really take your UI back in time. Fully customizable.

Examples

Asubtle

Notes.txt

Buy floppies. Defrag on Sunday.

Ln 1, Col 1
Barcade

Notes.txt

Buy floppies. Defrag on Sunday.

Ln 1, Col 1
Cbroken

Notes.txt

Buy floppies. Defrag on Sunday.

Ln 1, Col 1
Dcontrols

script.bash

C:\> 

Installation

npx shadcn@latest add https://www.ui95.dev/r/crt-screen.json

Run it in a Radix shadcn project that already has the UI95 theme.

Notes

Scoped is the default: the effect covers the box and its children, and the overlay never takes the pointer. Pass fullscreen to lay it over the whole viewport instead; curvature, aberration and bloom then filter the whole document, which costs more on large pages. Put padding and backgrounds on the children, not on CrtScreen, so the warp and the overlay share one box. Scanlines and grain are alpha black and white at device resolution and follow the barrel curve. Under curvature, clicks land at the undistorted position of the element. Portals opened from inside a scoped CrtScreen (dialogs, menus, toasts) mount on the body and escape the effect; use fullscreen to cover them. Reduced motion freezes the grain and turns flicker off.

API reference

CrtScreen

PropTypeDefault
speednumber-
framenumber-
fpsnumber-
scanlinesnumber-
scanlineDensitynumber-
noisenumber-
vignettenumber-
masknumber-
flickernumber-
bloomnumber-
curvaturenumber-
aberrationnumber-
rollboolean-
presetCrtPresetNamedefaultCrtPreset
fullscreenbooleanfalse

Uses

Updated Nov 6, 2026