Mert Topal

You paste a JWT into some online decoder to check a claim, and a second later it hits you: that token just went to a server you know nothing about. Is it logged? No idea. Same story with pasting JSON, an API response, whatever, into a random tool site covered in trackers and cookie banners. You never really know what happens to what you typed.

So I put the tools I actually use into one page where that isn't a question: tools.merrt.com.tr

Everything runs in your browser. Nothing you paste leaves the page, there's no backend, no cookies following you around, and it works offline (it's a PWA).

What's in there so far:

  • JSON formatter that actually tells you the line and column when your JSON is broken
  • JWT decoder with signature verification (HS/RS/ES/PS, using Web Crypto)
  • Diff checker for text, JSON or XML, split or unified view
  • Hash generator (MD5 + SHA family), works on files too
  • JSON <-> XML, YAML <-> JSON, CSV -> JSON converters
  • the usual base64 / url encode / regex tester / cron / uuid / color stuff

The annoying part was SEO. It's a React SPA, and SPAs are bad for search because every route serves the same empty HTML shell. So I wrote a little prerender step that outputs a real static HTML file per route at build time (each with its own title, meta and content), and the app just takes over once it loads. That way every tool is its own crawlable page but it still behaves like an SPA.

Deployed on Cloudflare Pages. Code is here if you want to poke at it: https://github.com/merrttopal/open-tools

Curious what people would add or what breaks for you.