Random, Fake & Mock Data Generator is a free, offline VS Code extension that inserts 130+ types of random, fake & mock data — names, emails, addresses, UUIDs, lorem ipsum, JSON/SQL/CSV records and whole datasets — at every cursor, in six locales, seeded and reproducible when you need it.
Fill every cursor with realistic fake data — a different value in each, in one step.
Names · Emails · Addresses · Finance · Git · Dates · UUIDs · Lorem ipsum · Mock JSON
Drop a multi-cursor selection down a column and fill every row with a different realistic value in one step — names, emails, IDs, dates, prices, whatever the column needs. All generated right where you're typing: no website, no signup, no waiting on a model — instant, offline, and reproducible when you seed it.
Perfect for test fixtures & database seeds · mock API responses · whole CSV / JSON / SQL datasets · UI placeholder & Storybook props · throwaway IDs, addresses & credentials.
Fake names & emails, UUIDs in any format, lorem ipsum with exact counts, numbers & dates with ranges, JSON/SQL/CSV records and whole datasets, your own templates & lists, six locales, and in-place anonymization — replace your UUID inserter, your lorem ipsum generator, your dummy-text filler, your CSV mocker, and your faker wrapper with one actively maintained extension. Offline, uncapped, seeded.
- Fill every cursor at once — a different value in each, in one step. Forty cursors at a bulk count of 25 is a thousand values in one command — the fastest way to seed a table, an array, or a fixture.
- 130+ realistic types — stop hand-typing fake data: identity, finance, git, system, network, and more across 20 categories (full list below).
- Six locales — names, addresses & text in English, German, French, Spanish, Brazilian Portuguese, or Japanese. One setting, no reload.
- Whole records in one shot — multi-select fields and drop a
{ name, email, phone }object, a SQLINSERTrow, or a CSV line at every cursor. Scales with bulk count. - Whole datasets in one command — Generate Dataset… builds up to 100,000 rows of JSON, CSV (with a header), or SQL
INSERTs and opens them as a new file. No signup, no export button, and none of the row caps web generators make you pay to lift — instant, offline, free. - Anonymize in place — select real data and Randomize Selection re-rolls every letter and digit where it stands (
3.14→8.77) — and a selection that is an email, UUID, or ISO date becomes a fresh realistic one of the same type instead. Shapes intact, secrets gone. - Reproducible when you need it — set a seed and every run replays the identical values — something AI generators can't promise, even with a seed parameter. Stable tests, snapshots, and demos.
- Drops straight into code — optional language-aware quoting and a trailing newline, so values land as valid syntax in arrays, JSON, SQL, and configs.
- Stays in your editor — fully offline: no account, no telemetry, no model calls. Your code never leaves your machine to get mock data back.
- Or skip the editor entirely — Clipboard mode copies a value straight to your clipboard (filenames, terminals, anywhere).
- Runs everywhere VS Code does — including vscode.dev and github.dev in the browser; the extension ships a web build.
- Configure from the Command Palette — insert type, quotes, bulk count, output format, seed, and locale, without ever opening Settings.
- Powered by Faker — the actively maintained, community-governed faker library, bundled into the extension (nothing fetched at runtime). Coherent, realistic data, not random noise.
Need a page of plausible narrative prose? That's a job for your AI assistant — and it's welcome to it. Need a thousand structured values that parse, replay identically under a seed, and never leave your machine? That's this extension's lane.
- Open the Command Palette — Cmd/Ctrl+Shift+P
- Type Insert Random, then pick a type — or run Insert Random: Pick… to browse all 130+.
- It drops in at every cursor. Multi-select a column first to fill every row at once.
No setup required — tweak quotes, bulk count, output format, seed, and locale whenever you want them.
Records to rows to a whole dataset — compose a { person, username, email } object at the cursor, switch the shape to SQL from the palette, then pour up to 100,000 rows of JSON, CSV, or SQL into a new file with Generate Dataset…. Offline, free, seeded-reproducible.
- Quotes follow the language, nothing configured — the same command lands
"…"in JavaScript and'…'in SQL. - Six locales, one setting, no reload — and seeded runs stay reproducible per locale.
- Anonymize in place — real data in, safe data out; nothing ever leaves your editor.
130+ types across 20 categories — every one is a direct Insert Random: command and a Quick Pick entry.
| Category | Types |
|---|---|
| Identity (17) | Full Name · First Name · Middle Name · Last Name · Name Prefix · Name Suffix · Username · Display Name · Email · Phone · Sex · Gender · Bio · Zodiac Sign · Job Title · Job Type · Job Area |
| Numbers (6) | Number · Float · Boolean · Hex Number · Binary Number · Octal Number |
| Text (12) | String · Alpha String · Numeric String · Word · Words · Sentence · Slug · Lorem Paragraph · Hacker Phrase · Emoji · Book Title · Book Author |
| Time (8) | Date · Past Date · Future Date · Recent Date · Soon Date · Birthdate · Weekday · Month |
| Location (15) | Country · Country Code · State · State Abbreviation · County · City · Zip Code · Street Name · Street Address · Secondary Address · Building Number · Direction · Latitude · Longitude · Time Zone |
| Network (11) | IP Address · IPv6 Address · MAC Address · URL · Domain Name · Port · Protocol · HTTP Method · HTTP Status Code · User Agent · JWT |
| Media (2) | Image URL · Avatar URL |
| Design (4) | Color (hex) · Color (rgb) · Color (hsl) · Color Name |
| Security (1) | Password |
| IDs (5) | UUID · ULID · Nano ID · MongoDB ObjectId · Hash |
| Nature (6) | Animal · Dog Breed · Cat Breed · Bird Species · Fish Species · Horse Breed |
| Company (3) | Company Name · Catch Phrase · Buzz Phrase |
| Commerce (7) | Product · Product Name · Price · Department · Product Material · Product Description · ISBN |
| Finance (13) | Amount · Currency Code · Currency Name · Currency Symbol · Credit Card Number · Credit Card CVV · IBAN · BIC · Account Number · Routing Number · Bitcoin Address · Ethereum Address · PIN |
| Git (3) | Git Branch · Git Commit SHA · Git Commit Message |
| System (6) | File Name · File Path · File Extension · MIME Type · Semver · Cron Expression |
| Vehicle (5) | Vehicle · Vehicle Manufacturer · Vehicle Model · VIN · License Plate (VRM) |
| Food (5) | Dish · Ingredient · Fruit · Vegetable · Cuisine |
| Music (4) | Song Name · Music Genre · Artist · Album |
| Travel (4) | Airline · Airport · Flight Number · Seat |
See SPEC — §Data Catalog for every type with its registry id, command id, and faker source.
Change any of these from the Commands below, or in VS Code Settings.
| Setting | Options | Default | What it does |
|---|---|---|---|
insertType |
Cursor · Top · Clipboard |
Cursor |
Where values go — each cursor, the top of the file, or the clipboard. |
insertRandomText.uniquePerCursor |
true · false |
true |
A different value at each cursor (multi-cursor fill), or the same value repeated. |
insertRandomText.strictUnique |
true · false |
false |
Re-draw duplicates so values meant to differ within one insert really do — bulk values, and across cursors when uniquePerCursor is on. A small pool (booleans, weekdays) that runs out keeps its duplicate. |
insertRandomText.bulkCount |
1–1000 |
1 |
How many values to insert at each cursor. |
insertRandomText.outputFormat |
plain · jsonArray · quotedList |
plain |
How bulk values render — one per line, a JSON array, or a quoted comma-separated list. |
insertRandomText.dateFormat |
iso · isoDate · isoTime · unixSeconds · unixMillis |
iso |
How the timestamp Time types render — full ISO 8601, date only, time only, or Unix seconds/milliseconds. |
insertRandomText.recordFormat |
json · sql · csv |
json |
Shape for Insert Random: Record… — a JSON object, a SQL INSERT row, or a CSV line. |
insertRandomText.recordSqlTable |
any string | table |
Table name used by the SQL record shape (when recordFormat is sql). |
insertRandomText.templates |
object: name → template | {} |
Your saved faker templates — shown in a Templates group at the top of Insert Random: Pick…. See Your own data. |
insertRandomText.customLists |
object: name → string array | {} |
Your own value lists — shown in a Custom Lists group at the top of Pick…, and available as Record… fields. See Your own data. |
insertRandomText.seed |
any number, or empty | (empty) | Reproducible output — the same seed yields the same values every run; empty = random. |
insertRandomText.locale |
en · de · fr · es · pt_BR · ja |
en |
Language/region generated data draws from — names, addresses, words and more come out localized. |
withQuote |
true · false |
true |
Wrap each inserted value in quotes. |
withNewLine |
true · false |
true |
Append a newline after each value. |
insertRandomText.contextMenu.enabled |
true · false |
false |
Add an "Insert Random" submenu to the editor right-click menu. |
See SPEC — §Configuration Reference for every setting with its exact type, default, and resolution rules, and §Quote Wrapping & Language-Aware Quoting for the full language buckets.
A few settings are easier to see than to describe.
outputFormat — how bulk values (bulk count > 1) render at each cursor. Two values, Kohler and Reilly (quotes follow the file's language — double in most, single in SQL; jsonArray always emits valid JSON):
| Format | Result |
|---|---|
plain |
"Kohler", then "Reilly" on the next line |
jsonArray |
[ "Kohler", "Reilly" ] |
quotedList |
"Kohler", "Reilly" |
recordFormat — the shape Insert Random: Record… composes your ticked fields into. Two fields, firstName and email, with recordSqlTable set to users:
| Shape | Result |
|---|---|
json |
{ "firstName": "Cooper", "email": "Noe.Dibbert@yahoo.com" } |
sql |
INSERT INTO users (firstName, email) VALUES ('Cooper', 'Noe.Dibbert@yahoo.com'); |
csv |
Cooper,Noe.Dibbert@yahoo.com |
Records escape by shape, not by the file's language — and a bulk count stacks them: json wraps into an array, sql emits one INSERT per line, csv one line per record.
dateFormat — how the timestamp Time types (Date, Past/Future/Recent/Soon Date, Birthdate, and Date (Between…)) render, everywhere they're drawn — single inserts and record fields alike. One drawn instant, five renderings:
| Format | Result |
|---|---|
iso |
2026-07-02T12:34:56.789Z |
isoDate |
2026-07-02 |
isoTime |
12:34:56 |
unixSeconds |
1782995696 |
unixMillis |
1782995696789 |
Weekday and Month are names, not timestamps — they're unaffected.
locale — the language/region every type draws from. The same "insert first name · street address" under four locales:
| Locale | Result |
|---|---|
en (default) |
Ignatius · 34683 Courtney Lakes |
de |
Jonna · Im Nesselrader Kamp 346 |
fr |
Danielle · 12 Boulevard de Presbourg |
ja |
愛菜 · 5丁目1番3号 |
Templates, patterns, and records follow it too; a type without localized data (UUIDs, numbers, …) falls back to English. Seeded runs stay reproducible per locale.
Automatic quoting — the same "insert email" adapts to the file's language, so the result is always valid syntax, no setting required:
.json·.go·.rs·.js·.py→"jane@example.com"— double quotes.sql→'jane@example.com', and an embedded apostrophe doubles:O'Brien→'O''Brien'
insertType — where the value lands:
- Cursor — a fresh value at every cursor; fill a whole column in one step
- Top — one block dropped at line 1
- Clipboard — copies a bare value, inserts nothing (handy for filenames, terminals)
Open the Command Palette (Cmd/Ctrl+Shift+P) and type Insert Random.
| Command | What it does |
|---|---|
| Insert Random: Pick… | Choose any type — led by your saved templates and custom lists, when you've defined some — from a grouped, searchable menu, then insert at every cursor. |
| Insert Random: Record… | Multi-select fields (catalog types and your custom lists) and insert them together as one record — a JSON object, SQL row, or CSV line — at every cursor (or the top / clipboard, per your insert type). |
| Insert Random: Generate Dataset… | Pick fields, a format, and a row count — up to 100,000 rows of JSON, CSV (with a header row), or SQL INSERTs open as a new file. See Generate whole datasets. |
| Insert Random: Number (Range…) / Float (Range…) / String (Length…) / Date (Between…) / Words (Count…) / Sentences (Count…) / Paragraphs (Count…) / UUID (Format…) / Password (Options…) / Phone (Format…) / Sequence (Start/Step…) | Parameterized types — enter a min & max, a length, a from/to date, a lorem count, or a sequence start & step in input boxes, or pick a format from a Quick Pick (UUID casing / braces / dashes, password length & symbols, phone style), and the value is generated to your spec, through the same pipeline (multi-cursor, bulk, quoting, seed). Sequence isn't random at all: 1, 2, 3… lands down your cursors, one increment per cursor and bulk item. Your last inputs and picks are remembered; Esc cancels cleanly. |
| Insert Random: From Template… / From Pattern… | Free-form types — write your own faker template or regex-like pattern and every cursor gets a fresh rendering. See Templates & patterns. |
| Insert Random: Randomize Selection | Anonymize in place — every selected letter and digit is re-rolled in kind (digits stay digits, letters keep their case, punctuation doesn't move), each selection replaced where it stands. See Anonymize in place. |
| Insert Random: ‹Type› | A direct command for every type — e.g. Insert Random: Email, Insert Random: UUID, Insert Random: Credit Card Number. |
| Insert Random: Set Insert Type / Output Format / Date Format / Record Format / Locale | Pick the value from a Quick Pick. |
| Insert Random: Set Bulk Count / Set Seed / Set Record SQL Table | Enter the value in an input box. |
| Insert Random: Toggle Wrap With Quotes / Trailing New Line / Unique Value Per Cursor / Strict Unique / Editor Context Menu | Flip a setting on or off. |
| Insert Random: Manage Templates / Manage Custom Lists | Jump to the setting where your saved templates / custom lists live. See Your own data. |
| Insert Random: Reset Settings to Defaults | Restore every setting to its default — your saved templates and custom lists are kept. |
See SPEC — §Commands for the two command namespaces and back-compat notes, §Insert Targets for exactly how Cursor / Top / Clipboard behave, and §Multi-Field Records for the record composer.
When no built-in type fits, write your own — one input box exposes faker's entire surface:
- Insert Random: From Template… — mustache-style placeholders, re-rendered with fresh values at every cursor and bulk item:
{{person.firstName}} <{{internet.email}}>→Jane <Vicky.DAmore99@gmail.com> - Insert Random: From Pattern… — a regex-like pattern (faker supports a limited subset: character classes, ranges, quantifiers):
[A-Z]{3}-[0-9]{4}→WUZ-7314
Input is validated as you type by test-rendering it — a typo shows faker's error plus a working example right in the box, and nothing is inserted until it renders. Your last template and pattern are remembered and prefilled.
Save the templates you reuse, and the values only your project knows, straight into Settings — they appear at the top of Insert Random: Pick…, ahead of the catalog:
- Templates render through faker on every insert — same syntax as From Template…, so every cursor and bulk item gets fresh values.
- Custom lists draw one random item per insert, and also show up as Record… fields — the name becomes the field key, so picking
environmentnext toEmailyields{ "environment": "staging", "email": "…" }. - Insert Random: Manage Templates / Manage Custom Lists jump straight to these settings. Both survive Reset Settings to Defaults — they're your data, not tuning.
Everything rides the normal pipeline: multi-cursor, bulk count, quoting, and seed all apply.
Need a file of test data, not a value at the cursor? Insert Random: Generate Dataset… walks three quick steps — pick fields (your custom lists included), pick a format, enter a row count — and opens the result as a new untitled file, ready to save:
- JSON — an array of objects, one record per line.
- CSV — one line per record, led by a header row of the field names.
- SQL — one
INSERT INTO your_table (…) VALUES (…);per record, using your configured table name.
Up to 100,000 rows, generated locally in an instant — no signup, no paywalled row caps, no export step, no data leaving your editor. The format pick starts on your recordFormat setting, the row count starts at your bulk count, and locale, seed, and date format all apply — a seeded run regenerates the identical dataset every time. Works with no editor open.
Pasted real data into a fixture, log, or bug report? Select it and run Insert Random: Randomize Selection — each selection is replaced where it stands, in two tiers:
-
Type-aware: a selection that is an email, UUID, or ISO date/timestamp becomes a fresh realistic fake of the same type — a UUID stays a valid UUID (case and braces preserved), a date stays a real calendar date:
jane.doe+prod@acme.com → Elta.Kuhlman@hotmail.com -
Same-shape for everything else: digits stay digits, letters keep their case, punctuation and layout don't move:
+63 (917) 555-0142 → +81 (269) 344-9518 -
Works on every non-empty selection at once — multi-select a column of secrets and scrub them in one step.
-
Detection is deliberately strict — the selection must be exactly the value (no padding, no surrounding text); anything else falls back to the safe same-shape scramble.
-
It's a replacement, not an insertion: quoting, bulk count, and the insert type don't apply. The seed does, so a seeded run scrubs reproducibly.
-
Also in the editor right-click menu, when the context-menu submenu is enabled.
This extension ships no default keyboard shortcuts — with 130+ commands, presetting a few would only collide with bindings you already use. Bind the types you reach for most, instead:
- Open Keyboard Shortcuts (Cmd/Ctrl+K Cmd/Ctrl+S).
- Search Insert Random.
- Click the ✎ pencil next to any command — e.g. Insert Random: UUID or Insert Random: Pick… — and press your combo.
Tip: bind Insert Random: Pick… to a single shortcut and you get keyboard-fast access to every type through its searchable menu.
Requires VS Code 1.97.0 or later.
- Marketplace: Extensions view (Cmd/Ctrl+Shift+X) → search Random, Fake & Mock Data Generator by ElecTreeFrying → Install.
- CLI:
code --install-extension ElecTreeFrying.insert-random-text - Direct: VS Code Marketplace listing
- VS Code 1.97.0 or later.
- Compatible hosts: Cursor, VSCodium, Code Server, and other forks that implement the VS Code API at the same engine version.
- Web: runs on vscode.dev and github.dev — a browser build ships in the extension.
- Platforms: macOS, Windows, Linux.
- Privacy: No network calls, no telemetry, no model calls — every value is generated locally by the bundled library.
If a command doesn't insert, or a value looks wrong, please open an issue on GitHub Issues.
How do I insert a random UUID in VS Code? Cmd/Ctrl+Shift+P → Insert Random: UUID. Need a specific rendering? UUID (Format…) picks uppercase, braces, or no dashes. Every cursor gets its own value.
How do I generate fake names, emails, and addresses in VS Code? Run Insert Random: Person / Email / Street Address directly (Person inserts a full name), or browse all 130+ types with Insert Random: Pick….
How do I generate mock JSON, CSV, or SQL test data?
Insert Random: Record… drops a composed object, INSERT row, or CSV line at every cursor; Generate Dataset… pours up to 100,000 rows into a new file.
Can I get the same values every run (seeded / reproducible data)?
Yes — set insertRandomText.seed and every run replays the identical sequence, per locale, datasets included.
Does it work offline — does my data stay private? Fully offline: the faker library ships inside the extension, and there are no network calls, no telemetry, no model calls. It runs in the browser on vscode.dev the same way.
How do I fill multiple cursors with a different value in each?
Stack cursors (Cmd/Ctrl+Option/Alt+↓), then run any Insert Random command — each cursor draws its own value (insertRandomText.uniquePerCursor, on by default).
See CHANGELOG.md for full release notes.
Contributions, bug reports, and feature requests are welcome in GitHub Issues.
This extension is free and always will be. If it's become part of your workflow, here are a few ways to give back:
- Star the repo on GitHub
- Leave a review on the VS Code Marketplace
- Send a donation to any address below
| Network | Address |
|---|---|
| Bitcoin | bc1q4j2uewfphjmca83905qv37vcl4jh8va5yupl7w |
| Solana | EHtTGyRoDAK44KBGrEoypAWyPpResHUqwufKnuLs7Tyy |
| Sui | 0xcaf8ff4a65d7e35d961abd0203180013b7fe974d4fa0313e880c39c45ada2b09 |
| ERC-20 (Ethereum / Base / Monad / Polygon / HyperEVM) | 0xd25f84Ed2F76dF2F0C8f1207402eF9e15b5d7855 |
- All extensions by ElecTreeFrying on the VS Code Marketplace.






