Mungr documentation
Everything Mungr can do, and how to use it to turn messy files into analysis-ready data, without your data ever leaving your device.
Quick start
Clean your first messy file in under five minutes.
Feature reference
Every transform, scan, and export capability explained.
Goal-based guides
How to reach a specific outcome: compliance, reuse, or automation.
Save & reuse recipes
Turn any cleanup into a one-click, shareable workflow.
Clean your first file
Mungr is a browser-based data cleaning workbench powered by DuckDB compiled to WebAssembly. It reads your file locally, so nothing is ever uploaded. No install, no sign-up needed to try it.
Supported files: CSV, TSV, Excel (.xlsx), plain text, and Parquet.
- Open the Workspace. Log in and go to your team's Workspace page, or register for a free account.
- Drop a file. Drag and drop your CSV, TSV, Excel, TXT, or Parquet file onto the drop zone. Multi-sheet Excel files let you pick which sheet to load.
- Run Smart Scan. Mungr inspects every column in milliseconds and flags potential issues: PII, mixed date formats, high null rates, outliers, and more. Each finding comes with a suggested fix.
- Review suggestions. Accept the draft steps that make sense, dismiss the rest. "Automated proposal, manual disposal."
- Add transforms. Use the step builder to trim, standardize, dedupe, mask, filter, and more. Every step runs as SQL against your data in the browser.
- Preview before and after. Toggle between the raw and cleaned views, inspect column statistics, then export your cleaned file.
Your first clean file can be ready in under 30 seconds. There is no upload, no processing queue, and no file-size download bottleneck. Mungr has been tested on files with 10M+ rows.
Smart Scan: automatic issue detection
Smart Scan inspects every column of a newly loaded file and groups findings by severity:
| Severity | What it detects | Suggested action |
|---|---|---|
| Red (Compliance) | SSN, email, phone, and credit card patterns | Mask, redact, or hash before sharing |
| Yellow (Integrity) | Mixed date formats, inconsistent casing, currency symbols, outliers, high null rates | Standardize formats; review flagged values |
| Blue (Cosmetic) | Trailing whitespace, moderate null rates | Trim whitespace; fill or review nulls |
Each finding becomes a draft recipe step with the correct configuration pre-filled. You review and accept or dismiss each one. Nothing is applied to your data automatically.
Data cleaning transforms
Mungr ships with 19 transforms. Every one executes as a SQL query in the browser and can be combined into a multi-step recipe.
| Transform | What it does | Typical use |
|---|---|---|
| Trim | Removes leading/trailing whitespace and collapses internal spaces | First step on almost every file |
| Change Case | Title case, UPPER, or lower for any column | Names, departments, codes, emails |
| Standardize Dates | Auto-detects mixed input formats and converts to one output format | Any column with mixed date formats |
| Regex Replace | Find-and-replace with regular expressions | Currency cleanup, code formatting, pattern fixes |
| Split Column | Splits one column into several by delimiter | Full name → first/last name |
| Correct Values | Replaces known incorrect values with the correct ones | Typos, legacy codes, aliases |
| Fill Nulls | Fill with a constant, zero, the column mean/median, the most common value, or forward/backward fill | Numeric measures, category columns |
| Convert Type | Changes a column's data type (text, number, date, boolean) | Fixing numbers stored as text |
| Remove Empty Rows | Drops rows that are entirely empty | Ragged exports with blank lines |
| Filter Rows | Keeps or removes rows matching a condition | Excluding test data or null IDs |
| Deduplicate | Removes duplicate rows by selected columns | Always after trim + casing for near-dupes |
| Remove Columns | Drops columns you don't need | Trimming an export to essentials |
| Rename Column | Renames any column | Standardizing header names |
| Sort | Sorts rows by any column | Ordering output for review |
| Validate Rules | Flags rows that don't match a rule as valid/invalid | Format checks before sharing |
| Custom Formula | Creates a new column with a SQL expression | Computed fields from existing data |
| Custom SQL | Runs arbitrary SQL against your table | Advanced analytics inside the browser |
| Join Tables | Joins a second table by key columns | Merging related exports |
| Mask PII | Masks, redacts, or hashes sensitive columns | Making files safe to share |
PII detection & masking
Mungr identifies columns containing personally identifiable information by column name and content patterns, and reports each match against the relevant HIPAA Safe Harbor category.
| PII type | HIPAA reference | Mask example | Redact example | Hash example |
|---|---|---|---|---|
| Safe Harbor #7 | j***@e***.com | [REDACTED] | a1b2c3d4... | |
| SSN | Safe Harbor #4 | ***-**-6789 | [REDACTED] | f6g7h8i9... |
| Phone | Safe Harbor #5 | (***) ***-1234 | [REDACTED] | k1l2m3n4... |
| Credit Card | PCI-DSS | ****-****-****-1234 | [REDACTED] | p6q7r8s9... |
When to use which: Mask when you need partial visibility (e.g., last 4 digits for support). Redact when sharing externally. Hash when joining datasets without exposing original values.
Regex preset library
Mungr includes a library of pre-built regex patterns across numbers, PII, text, and healthcare categories: currency stripping, phone normalization, HTML tag removal, ICD-10 code fixing, and more. Pick a preset in any Regex Replace step; the pattern and replacement auto-fill and remain fully editable.
Recipes
Any sequence of steps can be saved as a recipe: a JSON file containing only transformation logic, never data values. Recipes are stored server-side and scoped to your team.
Export as code
Export any recipe as self-contained code to run outside Mungr, without ever uploading data.
| Format | Output | Use case |
|---|---|---|
| Python (Pandas) | recipe.py | Hand to data engineers for CI/CD pipelines |
| DuckDB SQL | recipe.sql | Run on any machine with the DuckDB CLI |
| Shell script | recipe.sh | One-liner automation on servers |
Each exported script reads a CSV, applies every step in order, includes descriptive comments, and writes the cleaned output.
More capabilities
- Native Parquet & Excel support: read columnar Parquet at full speed and Excel workbooks (with sheet selection) without conversion.
- Streaming architecture: processes data in chunks, so a 10M-row file doesn't need 10M rows of RAM.
- Inline cell editing: double-click any cell and fix a single value on the spot, just like a spreadsheet.
- Before/After preview: compare raw vs cleaned data, with column statistics and row counts.
- Works offline: once loaded, cleaning continues with no connection.
- Team collaboration: recipes are shared across your team; admins can see usage per member.
- Report generation: summarize cleaned datasets with charts and insights directly in the workspace.
Edit cells inline
Sometimes a single value needs fixing without a full transform. Mungr supports spreadsheet-style inline editing:
- Double-click any cell in the preview grid. The cell becomes editable.
- Type the corrected value and press
Enter(or click away) to save. PressEscapeto cancel. - The edit is applied immediately to the current table, so column stats and downstream steps reflect the change right away.
Every manual edit is recorded in the change log with the old value, new value, and timestamp, so nothing happens silently. For changing many rows at once, use a transform (like Correct Values or Regex Replace) instead.
How to fill nulls
Missing values are one of the most common data problems. Mungr's Fill Nulls transform fills them in one step with a strategy that fits the column.
- In the Workspace, add a Fill Nulls step from the transform dropdown.
- Pick the column with the missing values.
- Pick a strategy (see below), then click Apply Recipe.
- Check the column stats and the before/after preview to confirm the result.
Which strategy should you use?
- Numeric columns (amounts, ages, scores): Column mean, Column median, or Zero.
- Category columns (department, status): Most common value or a Constant like "Unknown".
- Ordered / time-series data: Previous value (forward fill) or Next value (backward fill).
- A specific placeholder: Constant value (for example
0,N/A, orUnknown).
Note: mean and median only make sense for numeric columns. Forward and backward fill follow the row order, so they work best as the first step on the raw table.
Build & share a dashboard
Turn your cleaned data into a presentable dashboard for stakeholders. In the Workspace, open Dashboard and add widgets: KPI cards, bar, line, and pie charts, or a summary table. Each widget groups by any column and aggregates a measure (sum, average, count, min, max). Everything is computed locally.
- Add widgets, pick a group-by column, a measure, and an aggregation.
- Click Save dashboard to store it for your team, or load a previously saved one.
- Share it in two privacy-safe ways:
- Config (JSON): export the dashboard definition. A teammate opens it and loads their own file with the same schema. No data travels.
- HTML / PDF: export a self-contained report that embeds only the aggregated chart data and KPI numbers. Safe to send to anyone, even without Mungr.
Just like recipes, dashboards store only configuration, never data values.
Reach a goal, step by step
Rather than a list of buttons, here is how to achieve the outcomes teams come to Mungr for.
| Your goal | Recipe to follow |
|---|---|
| Make a file safe to share | Run Smart Scan to find PII → accept the suggested Mask PII steps (or add them per column) → choose mask, redact, or hash → export. |
| Prepare a recurring export for analysis | Trim → Change Case → Standardize Dates → Regex Replace (currency) → Fill Nulls → Deduplicate → Validate Rules. Save the sequence as a recipe and apply it to next month's export in one click. |
| Fix a one-off messy CSV quickly | Drop the file → accept the best Smart Scan suggestions → inspect column stats → clean up remaining issues with individual transforms → export. |
| Standardize names or addresses | Change Case → Trim → Split Column (full name → first/last) → Correct Values for known typos → Deduplicate. |
| Automate cleaning in a pipeline | Build the recipe visually → Export as code (Python, DuckDB SQL, or shell) → run the script on your servers. Data never leaves your infrastructure. |
| Give the whole team one way to clean | Save a recipe in the Workspace → it appears on the team's Recipes page → share the link → teammates open it and drop their own file. |
Standardize messy categorical values (aliases → canonical)
Sometimes the same thing is written many ways in one column. A country column might contain United States, USA, U.S., and US for the same country, while United Kingdom, UK, and Great Britain mean another. Left alone, these become fake categories that break group-by, joins, and deduplication.
Regex alone is not enough here. Regex can strip punctuation or fix casing (U.S. → US), but it cannot know that USA and United States of America are both "United States". That needs a mapping: a dictionary of every alias pointing to its canonical value. Mungr's Custom SQL step is built for exactly this, and it runs entirely in DuckDB in your browser, so it stays fast even on millions of rows.
Step 1: Know every alias
Open the column stats panel for your column in the Workspace to see its unique values. That list is your source of truth: every value you don't recognize is an alias to map.
Step 2: Add a Custom SQL step
Add a Custom SQL transform and replace the query with a CASE expression that rewrites the column in place. Use {input} as the placeholder for the current table.
Step 3: Paste the mapping
Group every alias under its canonical value. Example for a country column:
| Canonical value | Aliases it absorbs |
|---|---|
| United States | USA, U.S., US, United States of America |
| United Kingdom | UK, U.K., GB, Great Britain |
SELECT * REPLACE (
CASE
WHEN "country" IN ('USA', 'U.S.', 'US', 'United States of America')
THEN 'United States'
WHEN "country" IN ('UK', 'U.K.', 'GB', 'Great Britain')
THEN 'United Kingdom'
ELSE "country"
END AS "country"
) FROM {input}
Tips
- Trim and normalize case first. Run a
Trimstep, thenChange Case(e.g. lower) on the column before mapping, so casing variants likebd. lampungandBD. LAMPUNGcollapse into one alias. - Be exhaustive. Any value not listed passes through untouched (
ELSE "kolom"). Re-check column stats after applying to confirm nothing was missed. - Very large mappings. If you have hundreds of aliases, it is cleaner to create a two-column mapping table and
JOINinstead of a giantCASE. - Reuse it. Save the step as a recipe and apply it to next month's export with one click.
This pattern works for any categorical field: provinces, cities, departments, status codes, payment methods, wherever many strings mean the same thing.
How to save, use, and share a recipe
Recipes are the fastest way to stop repeating the same cleanup. They store only the transformation steps. Never your data.
Save a recipe
- In the Workspace, build your steps in the step builder until the preview looks right.
- Give the recipe a name and save it. It is now stored under your team.
- Optionally export it as JSON or as code (Python/SQL/shell) for use outside Mungr.
Use a recipe on a new file
- Open the Recipes page and pick the recipe you need.
- Drop a new file with the same structure.
- Confirm the steps reference the right columns (Mungr warns you if any are missing), then run.
Share a recipe with your team
- Recipes are scoped to your team, so every member can see them by default.
- Copy the recipe link and share it in Slack, Notion, or your wiki.
- A teammate opens the link, drops their own file, and applies the same cleanup instantly.
Track versions
Pro and Enterprise plans keep recipe version history, so you can restore an earlier version if a step set changes.
What each plan includes
| Limit | Free | Pro | Enterprise |
|---|---|---|---|
| Max file size | 100 MB | 1 GB | Unlimited |
| Total processing | 5 GB total | Unlimited | Unlimited |
| Saved recipes | 3 | Unlimited | Unlimited |
| Recipe version history | No | Included | Included |
| Team sharing | No | Team recipes | Team recipes & admin roles |
| Usage reporting | No | Per member | Per member |
All plans process data entirely in the browser. No plan tier "turns on" data handling; it only expands limits and collaboration features.
Why there is a file size limit
Mungr runs DuckDB in the browser via WebAssembly, and WebAssembly limits available memory to about 4 GB. Parsing a CSV expands in memory well beyond the file size on disk (the raw text, the parsed columnar table, and intermediate results all live in memory at once). That is why files are capped at 100 MB on Free and 1 GB on Pro, and why total processing is 5 GB on Free.
As a practical guide, files in the 10M to 20M row range usually work well on a typical laptop, depending on how many columns they have. Very wide files (hundreds of columns) and files with a lot of text use noticeably more memory. If a file fails to load with an out-of-memory error, split it into smaller parts, clean each part, and combine the results.
Ready to clean your first file?
Free up to 5GB. No install. No upload. No credit card.
Get started for free