For manufacturers and embedded engineers
Allocate MAC addresses and serial numbers without duplicates
A central source of truth for assigning MAC addresses and serial numbers across products, factories and manufacturing runs. Register the IEEE MA-L, MA-M or MA-S block you own, define a serial number scheme, and reserve a production batch atomically: one MAC range and one serial range, together, exported as CSV for the programming line.
See plans →What one batch gives you
- A contiguous MAC range, computed from your block's first workable address, or a starting point you choose
- A contiguous serial number range from a template you define once and reuse: prefix, date code, sequence, check digit
- Both reserved together, atomically, so two batches can never collide, even generated seconds apart
- A CSV export, streamed instantly for a small batch or compiled in the background for a large one
Built for what actually happens after
- Mark a batch shipped once it's confirmed in the field: that range is then permanent, never reusable again
- Mark it released if the factory didn't use it, and reuse that exact range later, only when you explicitly choose to
- Split a batch at any device count, down to a single device, if only part of a run needs a different fate
- Downgrade off Scale and keep every block, batch, and export you've already made; only new batches are gated
The workflow
From a block you own to a programmed, verified unit
- Register an IEEE-owned MA-S, MA-M or MA-L block. You enter a block you already control. This tool does not issue or register IEEE assignments and does not verify ownership; it only computes addresses inside the range you assert. To size an assignment against your production volume, use the block capacity calculator.
- Define a serial number scheme. An optional prefix with your model identifier, an optional date or ISO-week code, a zero-padded sequence, and an optional Luhn check digit. See generating serial numbers for manufactured products.
- Reserve a production batch atomically. One step takes a contiguous MAC range and a matching serial range together, so concurrent requests from different production lines or factories can never collide.
- Export the MAC and serial mappings. A CSV, one row per unit, for the programming and labelling stations. Streamed instantly for a small run, compiled in the background for a large one.
- Program and verify the devices. Write the address into EEPROM, flash or OTP on the line, then read it back and confirm it matches the allocated value. That check is a line operation; the export is the authoritative value to check against.
- Mark the range shipped, split it, or release the unused portion. A shipped range is permanent. An unused portion is released as an explicit starting point for next time, never silently recycled.
This is MAC address pool management: automatic, sequential allocation from an OUI address pool you own, with duplicate MAC address prevention built in, whether you build in one plant or hand isolated subranges to multiple factories and a contract manufacturer.
See it in action
Ship it, release it, split it, the batch stays yours
Every batch keeps its own status, and every action on it is reversible except shipping. Export CSV from any of them at any time, whatever they were generated for.
Available now
Scale plan today, self-hosted next
Scale plan
Live in your dashboard now
Included with every Scale subscription, alongside 1,000,000 API lookups/month. Sign in and open Provision from your account to start.
See plans →Self-hosted
Coming to the self-hosted license
The self-hosted engine already runs the lookup API and sync service on your own infrastructure. Batch provisioning is joining it next.
Ask about timing →Losing the plan
Your data outlives your subscription
Downgrade or cancel and every block, portfolio, batch, and export you generated stays exactly as it was. Only creating a new batch needs Scale again.
New to this
Walk through your first batch step by step
Registering a block, defining a serial scheme, and generating your first batch, plus what to do when a factory only uses part of a run.
Read the guide →Background reading
The manufacturing allocation problem, in depth
Vendor-neutral guides on getting a unique MAC address and serial number into every unit on a production line.
- How to allocate MAC addresses to devices during manufacturing: obtaining a block, dividing it, sequential vs random, atomic reservation, writing to EEPROM/flash/OTP, verification.
- MAC address pool management for multiple factories: why shared spreadsheets stop being safe, central allocation, factory subranges, audit history.
- How to share MAC address ranges with a contract manufacturer: isolated ranges, production-order exports, reconciling manufactured, failed and shipped units.
- How to generate serial numbers for manufactured products: prefixes, date codes, zero-padded sequences, Luhn check digits, linking each serial to a MAC address.
- Assigning multiple MAC addresses to one device: counting interfaces, contiguous address groups, fixed offsets.
- MAC address allocation spreadsheet template: a free CSV to start from, and when a spreadsheet stops being safe.
FAQ
Common questions about batch provisioning
Do you verify I actually own the OUI block I register?
No. Registering a block is self-declared: this tool never talks to IEEE on your behalf and never registers anything, it only computes addresses within a range you assert you control. We show a non-blocking note if the block matches a registered organization in our own IEEE-synced database, but nothing is gated on it. The practical risk of a false claim is bad data in your own account, not anything IEEE-facing.
What happens if a factory doesn't use an entire batch?
Mark the unused part released instead of shipped, and it becomes an explicit starting point for your next batch, never silently reused. A batch that's only partly used can be split first, at any device count, so you can ship the part that shipped and release the rest. Nothing is ever handed out to a new batch automatically: reusing a released range is always a deliberate choice you make, not something the tool does for you.
What serial number formats does it support?
A configurable template per scheme: an optional literal prefix, an optional date code (year + ISO week, or a full date), a zero-padded sequence of however many digits you need, and an optional trailing Luhn check digit. Define a scheme once and reuse it across every batch that should share the same format.
How does it prevent duplicate MAC addresses?
A batch reservation is a single atomic step: it takes a contiguous MAC range and a contiguous serial range together and advances the pointer once, so two batches generated at the same instant on different production lines get adjacent, non-overlapping ranges. An address that was allocated but not used is never returned to the pool automatically. A released range is only ever reused when you explicitly choose it, and nothing is ever deleted, so every address handed out stays on record.
Can I use this across multiple factories or a contract manufacturer?
Yes. Model each factory or contract manufacturer as its own portfolio (optionally its own registered sub-block) with a bounded subrange of your block. Each site requests batches from that subrange only, so it cannot reach an address used elsewhere, and concurrent requests from different sites still get disjoint ranges. Send each production order as a CSV export; release whatever the run did not use.
What happens to my generated data if I downgrade from Scale?
Nothing is deleted or hidden. You keep full access to every block, portfolio, batch, and export you've already created on any plan; only creating a new batch requires Scale. Downgrading just stops new address consumption, the same way it would for any other plan-gated feature here.
Can I export to Excel, not just CSV?
CSV today, which opens directly in Excel, Google Sheets, or Numbers. A native XLSX export is planned; if your workflow needs something CSV can't carry, get in touch.
Is this available in the self-hosted license?
Not yet. It's live now on the hosted Scale plan, and we're bringing it into the self-hosted license as part of the same engine. If self-hosted batch provisioning would unblock you sooner, contact us and tell us your timeline.