I broke OCR on deckedit.com for about 24 hours. I'm sorry.
If you tried to convert a deck on April 19 or 20, 2026, and it failed or got stuck, this is what happened, why I didn't catch it sooner, and what I changed so this doesn't happen the same way again.
What happened
For about 24 hours on April 19–20, 2026, the slide-recognition step on deckedit.com failed for most users. Uploads either errored out or appeared stuck. The site itself loaded fine; it was the part that reads text from your slides that was broken.
Was my data at risk?
No. DeckEdit runs entirely in your browser. Your files were never uploaded anywhere. The failure was a startup error in the in-browser engine — nothing reached a server because nothing ever does.
What caused it
GPU-accelerated OCR has been running on the live site since January 2026. It worked for months. Yesterday I spent about eleven hours making the engine's error reporting more honest — clearer messages when something goes wrong, a one-click way to switch to CPU mode, and removing some retry logic that could mask real failures. That work did what it was supposed to do. It also did something I didn't expect: by removing the muffling, it exposed a conflict between the engine's background-helper startup and a small piece of supporting code the live site has relied on since January. The conflict had been quietly there the whole time — three months — without ever surfacing as a user-visible failure. My honesty patches stripped its hiding place. The site loaded normally, but the engine couldn't finish starting, and recognition failed.
Why I didn't notice for 24 hours
I tested the change in my development preview and it worked. The piece of supporting code that's involved in this conflict is deliberately skipped in preview — it has been since January, on purpose, to keep development fast. So my preview was running a structurally simpler startup than the live site, and it never went near the failing path. "Works in preview" was true, and meaningless for this particular change. That's on me.
What's fixed
I told the in-browser engine to use its simpler main-thread startup on the live site too — the same startup my preview had been using successfully all along. GPU OCR is back: a few seconds per slide on machines with GPU support. The very first slide after you load the page may stutter for one to three seconds while the GPU compiles its shaders; every slide after that runs at full speed. On devices without GPU support, OCR falls back to the CPU and is slower — that's a hardware limit, not something I can fix in software.
What I changed so this doesn't happen the same way again
Any future change that touches how the in-browser engine starts up — startup mode, GPU initialization, or anything around the supporting code that's deliberately skipped in preview — must be verified on the live site (deckedit.com) before I call it done. "Works in preview" is no longer evidence for this class of change. I've written this rule into my own working notes so I can't forget it.
Thank you
If you came back today and it worked, thank you for the second chance. If you gave up on April 19 or 20 — I understand, and I'm sorry. The tool is free, but your time isn't, and I cost you some of it.
— Keith Li, the person who builds DeckEdit