בס״ד

Batch Password Generator

Many passwords, one-time links

A batch password generator produces many random passwords or passphrases in one run instead of one at a time. Our batch generator makes 1 to 50 values with the same options as the single password and passphrase generators, shows the entropy of each one in bits, and can wrap every value in a one-time link that is encrypted in your browser and destroyed after it has been opened. Copy the list, copy it as CSV, or download the CSV file.

10
150
16
864

Characters to leave out of every password (useful for avoiding ambiguous characters)

What is a batch password generator for?

A batch password generator is for the moments when one password is not enough. The same three jobs come up again and again:

  • Onboarding many accounts at once. A new class, a new team, a new customer with 40 seats. Each account needs its own initial password, and generating them one by one on a single-password page means 40 round trips and 40 chances to reuse one by mistake.
  • Handing out initial passwords. Help desks and IT teams issue temporary passwords that the user must change on first login. The batch generator makes the whole set, and the one-time links make sure each person gets only their own and can tell whether anyone opened it first.
  • Seeding a password manager. When you move a shared vault to unique credentials, or rotate every service account after a departure, you need a stack of strong values ready to paste. Generate 50, import the CSV, then rotate each service in turn.

Every value in a batch is generated independently by advanced cryptographic random generation, so the entropy beside each row is the entropy of that value alone. A 16-character password over the full 88-character set is about 103 bits. A 4-word passphrase from the EFF short wordlist is 41.4 bits and an 8-word passphrase is 82.7. The password and passphrase options work exactly as they do on the password generator and the passphrase generator, so whatever policy you settled on there applies to the whole batch. Nothing generated is stored or logged.

Why do one-time links beat pasting passwords in a spreadsheet or chat?

The usual way to distribute a batch of passwords is a spreadsheet with a name in one column and a password in the next, shared by email or dropped into a chat channel. That spreadsheet is now a plaintext credential file, and it is copied everywhere the message goes: the sender's Sent folder, each recipient's inbox, the mail provider's backups, the chat workspace's export archive, and every phone that synced the thread. Deleting your copy deletes none of the others. Everyone on the thread can read everyone else's password, and none of them can tell whether someone already has.

With the “Also create a one-time link for each” option, the spreadsheet holds links instead of passwords. Each link opens exactly one value, works only for the number of views you allowed (1 by default), and expires anywhere from 1 hour to 30 days after it was made. Send each person their own link. If a link has already been used when the right person opens it, they know at once that someone else saw it and the password needs to be reissued. A link that is never opened is destroyed at its expiry time. A spreadsheet of spent links is worthless to anyone who finds it later.

Send the username through your normal channel and only the link through the other, so no single message carries a working login. The one-time secret page explains the same approach for a single password, including the password-protected mode.

How do the batch one-time links work?

Each link is created the same way the single one-time secret tool creates one. Your browser encrypts the value with AES-256-GCM using a fresh random key, sends only the ciphertext to our server, and receives back a short link ending in a base58 ID. The browser then appends the key to that link after a # character. Everything after the # is the URL fragment, and browsers never include the fragment in an HTTP request, so the key stays out of our server, our logs and any referrer header. Our server holds ciphertext it has no key for.

When the recipient opens the link, their browser fetches the ciphertext, reads the key from its own address bar and decrypts locally. Serving the last allowed view marks the record destroyed in the same database write, so the link immediately stops returning anything, and an hourly cleanup job deletes the stored row. A link that expires unopened is deleted the same way. Batch links are never password protected: with up to 50 recipients, a shared password would have to be distributed too, which puts the problem back where it started. Use the single secret tool for a password-protected link.

Links are made three at a time and each one is a separate request, so a batch of 50 links uses 50 of the 200 requests an IP address gets per day. If the daily limit is reached partway through, the page stops, shows the limit message, and keeps the links it already made. Rows without a link still hold their password, so you can copy or download what you have.

What is the CSV format?

Copy all as CSV and Download CSV produce the same text. The first line is a header, then one line per value. Without links the file has a single column:

value
k7$Qm2!vXp9&Lw4z
Rt8@Nc3^Hb6*Yf1j

With links there are two columns, the value and its link:

value,url
k7$Qm2!vXp9&Lw4z,https://dnsx.dev/s/3xK9mPq2#7HfR2nBw
Rt8@Nc3^Hb6*Yf1j,https://dnsx.dev/s/8bWq1Lz5#Ck4tMp9d

Passwords can contain commas, and passphrases can contain spaces. A field that holds a comma, a double quote or a line break is wrapped in double quotes, with any double quote inside it doubled, as RFC 4180 describes, so Excel, Google Sheets, LibreOffice and every password manager's CSV import read it correctly. Copy all (without CSV) gives the values alone, one per line and never quoted, for pasting into a terminal or a script. Add the name or username column yourself before you send anything, and delete the value column once the links are in place.

How do I generate passwords in bulk from the command line or a spreadsheet?

The same batch generator answers curl. The count and every option from the page are query parameters, and the response is JSON with one item per value, each carrying its entropy and strength. Add format=raw to get plain text, one value per line, for piping into a script. Add secret=1 to have the API create a one-time link for each value as well.

$ curl "https://api.dnsx.dev/tools/password/batch?count=10&length=20"
$ curl "https://api.dnsx.dev/tools/passphrase/batch?count=10&words=5"
$ curl "https://api.dnsx.dev/tools/password/batch?count=10&secret=1&format=raw"

In Google Sheets, a single formula pulls a fresh password into a cell, and filling it down gives one per row:

=IMPORTDATA("https://api.dnsx.dev/tools/password?length=20&format=raw")

Sheets recalculates IMPORTDATA on its own schedule, so copy the results and paste them as values before you rely on them. Excel users can do the same with Power Query or a WEBSERVICE call.

One-time links made through the API with secret=1 are encrypted on our server, for scripts that cannot run a browser. Links made on this page are encrypted in your browser and our server never sees the value. Both kinds open on the same viewer page and destroy themselves the same way. Every request counts toward the daily limit of 200 per IP address, and no API key is needed.

Frequently Asked Questions

What is a batch password generator?▼
A batch password generator produces many random passwords or passphrases in one go instead of one at a time. The DNSX batch generator makes between 1 and 50 values per run, each drawn independently with advanced cryptographic random generation, shows the entropy in bits for every one, and can wrap each value in an encrypted one-time link so it can be handed to a different person without ever being pasted into a spreadsheet, an email or a chat message.
How many passwords can I generate at once?▼
Up to 50 per run on the DNSX batch generator, for both passwords and passphrases. Passwords can be 8 to 64 characters from any mix of uppercase, lowercase, digits and symbols, with an exclusion list for look-alike characters. Passphrases can be 3 to 8 words from the EFF short wordlist. Run it again for the next 50. Every value in a batch is generated independently, so two runs never overlap and no value is derived from another.
Are the passwords in a batch related to each other?▼
No. Each password in a batch is generated independently from the same random source used for single passwords, so knowing one value tells an attacker nothing about the others. The entropy shown beside each row is the entropy of that value on its own: a 16-character password over the full 88-character set carries about 103 bits whether it was generated alone or as one of 50.
Why give each person a one-time link instead of the password itself?▼
A password pasted into a spreadsheet, an email or a chat message is copied to every mailbox, backup and export that message touches, and stays readable for as long as those copies exist. A one-time link carries only a pointer to ciphertext that is encrypted in the sender's browser, is decrypted only by the recipient's browser, and is destroyed once it has been opened the allowed number of times (1 by default) or its expiry passes (1 hour to 30 days). The spreadsheet then holds links that stop working after use, and the recipient knows nobody else opened theirs.
Can DNSX see the passwords in the one-time links?▼
Links created on the batch page are encrypted in your browser with AES-256-GCM before anything is sent, and the decryption key is placed in the URL fragment after the # sign, which browsers never send to a server. DNSX stores only ciphertext it cannot read. Links created through the API with the secret parameter are different: they are encrypted by the DNSX server, which sees the value once and keeps neither the value nor the key, so a script gets a link with one request but has to trust the server for that moment.

Related Tools