Somewhere in every government office, every law firm, every accounting practice, and every hospital records department, there is a filing cabinet. It was emptied years ago. The contents were scanned — page by page, sometimes thousands of pages — and turned into PDFs. Digital transformation. Progress.
Except the PDFs can’t be searched.
Because a scanned document isn’t text. It’s a photograph of text. Each page is an image — a flat grid of pixels that happens to look like words. The computer sees shapes. Not letters, not sentences, not clauses. Just shapes.
You can’t Command+F a shape. You can’t copy and paste from it. You can’t index it, tag it, or extract a paragraph from page 387 without scrolling through pages 1 through 386 first.
This is the reality of millions of digitised documents worldwide. They exist in a format that looks modern but functions like the original paper. The filing cabinet was replaced by a folder on a hard drive — but the hard drive is just as dumb as the cabinet was. It holds the files. It doesn’t understand them.
Video has an equivalent problem. A file that looks like a video — .mov, .mkv, .avi — is a container, not a format. Inside that container, the video is encoded using a codec: H.264, H.265, ProRes, AV1, VP9. The codec is the compression algorithm that actually stores the frames. And not every player can read every codec. Not every platform accepts every container-codec combination.
This is why a video recorded on an iPhone in HEVC (.mov) won’t play on a Windows machine that doesn’t have the right codec pack installed. It’s why a .mkv file with H.265 content might play locally but won’t upload to a platform that only accepts H.264. The container is readable. The codec isn’t.
The fix has always been transcoding — converting the video from one codec to another. FFmpeg, the command-line tool that handles this, has been able to do it since 1999. But FFmpeg requires a command line. Most people who have a video that won’t play are not people who use command lines.
Modern browser-based transcoding changes this. Running on-device through WebAssembly, the conversion happens locally. No upload. No server. No third party processing your footage. You get a video that plays everywhere, without your file having traveled anywhere.
The codec mess was always a solvable problem. It just needed a tool that met people where they are.