Show HN: Datamorph – A clean JSON ⇄ CSV converter with auto-detect
datamorphio.vercel.appHi everyone,
I built a small web tool called Datamorph because I kept running into JSON/CSV converters that either broke with nested data, required login, or added weird formatting.
Datamorph is a minimal, fast, no-login tool that can:
• Convert JSON → CSV and CSV → JSON • Auto-detect structure (arrays, nested objects, mixed data) • Handle uploads or manual text input • Beautify / fix invalid JSON • Give clean, flat CSV output for real-world messy data
It’s built with React + Supabase + serverless functions. Everything runs client-side except file parsing, so nothing is stored.
I know there are many similar tools, but I tried focusing on:
• better handling of nested JSON, • simpler UI, • zero ads / zero login, • instant conversion without waiting.
Would love feedback on edge cases it fails on, or features you think would make this actually useful for devs and analysts.
Live tool: https://datamorphio.vercel.app/
Thanks for checking it out!
Tried it on a 9.9MB json file I have. Seemed to handle the size fine, but the output was nothing like what I would want. I made a smaller version of what I uploaded in the below pastebin and the output.
The data is TLD data so it should have at least given me the "com", "net", "..." part
Input
https://pastebin.com/QAWeu8Xt
Output
An explanation of _how_ it does the conversion would be nice when choosing a tool like this. As the "just works" didn't seem to work.Sorry for this incorrect output. Earlier my code wasn't compatible with deep nested Json. Thanks for pointing that out and now I have successfully modified codebase to support the similar JSONs. You can try it out!!
Please feel free to report any more obstacle in app experience.
I tried converting this:
[
]And I got:
name,carb,cholesterol,fiber,minerals,protein,sodium,vitamins
Avocado Dip,2,5,0,"{""ca"":0,""fe"":0}",1,210,"{""a"":0,""c"":0}"
Which is not what I would expect.
Sorry for the inconvenience. The problem was that my logic was working for few working types and sets of json. So, it wasn't able to recognize your need. So now I have made the logic more robust, so it can handle wide range of json types.
Thanks for feedback. Have a Good Day!!
{ "data": { "field1": "hello", "test": [ "what", "is", "this" ] }, "something": "yay" }
becomes
data,something [object Object],yay
I already knew complex types / nested objects would not work. but what makes json stronger than csv is that you can handle more complex data types and most people will use json that way too. Otherwise json would just be a less bloated xml, which is a less bloated csv. lol
Your api keys are public
I love the smell of vibe coding in the morning.
No engagement from the OP. I guess they are already vibe coding their next masterwork?
No unit tests.