Laravel
Turbo Seeder
Seed millions of records in seconds — not minutes. A high-performance database seeder built for production-scale data generation with minimal time and memory.
$ composer require iz-ahmad/laravel-turbo-seederCopy❯ php artisan turbo-seeder:run UsersTurboSeeder → table users strategy csv count 1,000,000 [████████████████████████] 100% ✓ done inserted 1,000,000 rows time 19.4s mem 124 MB rate 51,546 rows/s
Default seeders weren't built for scale.
Seeding 500K-1M+ records for realistic load testing can take 30+ minutes and unbounded memory — slowing every iteration. Turbo Seeder eliminates that bottleneck.
- One query per row via Eloquent
- Model events fire on every record
- Memory climbs without bound
- Blocks CI/CD & slows iterations
- Raw bulk INSERT — no Eloquent
- Native CSV import (LOAD DATA / COPY)
- Memory stays flat — lazy generators
- CI/CD friendly — fast every run
How it's so fast.
Raw SQL only — no model events, no observers, no per-row hydration.
Multi-row INSERT statements instead of one query per row.
LOAD DATA (MySQL) / COPY FROM STDIN (PostgreSQL) for raw throughput.
Lazy generators keep memory flat, with automatic GC between chunks.
FK checks and query logging are disabled automatically during the seed.
CSV is piped as a stream and never fully loaded into memory.
Up and running in three steps.
No config required — sensible, performance-tuned defaults out of the box.
$ composer require
iz-ahmad/laravel-turbo-seeder$ php artisan
make:turbo-seeder UserTurboSeeder
--table=users --count=1000000$ php artisan
turbo-seeder:run UserTurboSeederTwo choices. Any combination.
How you generate rows, and how they're written to the database — pick each independently.
Your existing factory definition, as-is — states work exactly like before.
Faker-free closure powered by TurboData helpers — index-based, O(1) memory.
Multi-row INSERT statements. Works everywhere, zero setup required.
LOAD DATA (MySQL) / COPY FROM STDIN (PostgreSQL) — one method call away.
// Reuse your existing factory — ~100× faster at scale use IzAhmad\TurboSeeder\Facades\TurboSeeder; TurboSeeder::fromFactory(User::factory()) ->count(100_000) ->run();
Both paths run through the same engine, and either strategy works with either path — mix and match freely. Explore the docs →
Everything you need — at a glance.
MySQL · PostgreSQL · SQLite
Chunk size, transactions, retries, FK/unique checks
Load FK values in one line, zero extra queries
Per-driver conflict resolution
Enums, JSON, dates, arrays — automatic
Real-time bar with live metrics
Validate generation without committing
PHP 8.2+ · CI/CD ready
Stop waiting on your seeders.
Install it, scaffold a seeder, and seed production-scale data in seconds. Free & open source under MIT.
$ composer require iz-ahmad/laravel-turbo-seederCopy