DEV Community

Сергей Муштук
Сергей Муштук

Posted on

20 + Free Online Tools for BI, Bitrix24 & Marketers

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:

  • Deploy: static folder on Nginx, Cloudflare cache, sitemap.xml auto-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();
};
Enter fullscreen mode Exit fullscreen mode

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 🔗

  1. Star or fork any repo: https://github.com/lermont/bi-data-tools
  2. Submit bugs, edge cases, feature ideas.

Happy scripting and cleaner data!

Top comments (0)