⚡ TL;DR
We’ve open-sourced 20 + micro-utilities that remove the boring parts of day-to-day data & marketing work:
CSV ⇄ JSONL ⇄ XML converters, UTM bulk cleaner, Bitrix24 batch builder, Date-time detective… — all living at https://bi-data.ru/tools/ and under MIT on GitHub.
Why another toolbox?
Because we kept Googling for “csv to yml online” and landing on shady ad-ware sites.
So we rewrote the stuff we needed:
- No frameworks, only vanilla JS/PHP, 0 external APIs → instant load
- Works offline (add to bookmarks)
- MIT-licensed code on GitHub — fork & hack away
Feel free to cherry-pick what you need or drop the whole /tools folder into your own project.
What’s inside?
| 🔧 Tool | 1-liner |
|---|---|
| CSV ⇄ JSONL ⇄ XML | drag-&-drop file, get any format back |
| CSV → dbt seed YAML | auto‐generate schema.yml block |
| CSV → YML (Yandex Market) | ready-to-upload marketplace feed |
| UTM Bulk Cleaner | normalises 1 000 messy URLs, dedups utm_params |
| Webhook Composer / Batch Builder | cURL & fetch snippets for Bitrix24 |
| SQL Formatter | instant pretty-print (pgsql, mysql, sqlite) |
| Regex Playground | live highlight + test cases |
| Date-Time Converter | seconds / millis / micros / FILETIME |
| Cron ↔ RRULE Wizard | schedule strings both ways |
| YML Feed Doctor (new) | validates, prettifies, diffs huge feeds |
…and a bunch more under /tools/.
Under the hood
- UI: pure HTML + Tailwind-ish inline CSS
-
Parsing:
-
PapaParsefor CSV / TSV -
fast-xml-parserfor XML -
js-yamlfor YAML
-
Deploy: static folder on Nginx, Cloudflare cache,
sitemap.xmlauto-generated by a 15-line Python script
Bite-size example — UTM Bulk Cleaner
const cleanUrl = raw => {
const url = new URL(raw);
const keep = new Map();
url.searchParams.forEach((v, k) => {
const low = k.toLowerCase();
if (low.startsWith('utm_')) {
if (!keep.has(low)) keep.set(low, v); // dedup
} else keep.set(k, v); // keep non-UTM
});
url.search = '';
[...keep].forEach(([k, v]) => url.searchParams.append(k, v));
return url.toString();
};
That’s literally the whole script — drop it into a <textarea> playground and you have an online service.
Roadmap (help wanted!)
- Parquet ⇄ CSV (Wasm)
- Edge-worker version of SQL formatter
- CLI bundle (
npx bi-data-tools csv-to-yml feed.csv) - New ideas? Open an issue — we usually merge within a day.
How you can help 🔗
- ⭐ Star or fork any repo: https://github.com/lermont/bi-data-tools
- Submit bugs, edge cases, feature ideas.
Happy scripting and cleaner data!
Top comments (0)