The short version
A fresh Laravel install creates 7-8 tables depending on your packages. The core ones are users, password_resets, failed_jobs, and personal_access_tokens. The cache, sessions, jobs, and batches tables are only created if you run the corresponding Artisan commands.
The core tables
users
| Column | Type | What it means |
|---|---|---|
id | bigint (PK) | Auto-incrementing primary key. |
name | varchar(255) | User's display name. |
email | varchar(255) | Unique email address. |
email_verified_at | timestamp | When email was verified. Null if unverified. |
password | varchar(255) | Hashed password (bcrypt). Never store plain text. |
remember_token | varchar(100) | Token for "remember me" functionality. |
password_resets
| Column | Type | What it means |
|---|---|---|
email | varchar(255) | The email requesting a reset. |
token | varchar(255) | The reset token (hashed). |
created_at | timestamp | When the token was generated. |
failed_jobs
| Column | Type | What it means |
|---|---|---|
id | bigint (PK) | Auto-incrementing ID. |
uuid | varchar(255) | Unique identifier for the job. |
connection | text | Queue connection that failed. |
queue | varchar | Which queue the job was on. |
payload | longText | The job's serialized data. |
exception | longText | The full exception stack trace. |
personal_access_tokens
Created by Laravel Sanctum for API token authentication.
| Column | Type | What it means |
|---|---|---|
id | bigint (PK) | Auto-incrementing ID. |
tokenable_type | varchar(255) | The model this token belongs to. |
tokenable_id | bigint | The ID of that model. |
name | varchar(255) | Token name (e.g., "Mobile App"). |
token | varchar(60) | The hashed token value. |
abilities | text | JSON array of allowed abilities. |
Optional tables
sessions -- created by php artisan session:table. cache -- created by php artisan cache:table. jobs -- created by php artisan queue:table. batches -- created by php artisan queue:batches-table. None are created by default.
FAQ
Does Laravel create all these tables automatically?
No. Only users, password_resets, and failed_jobs are created by php artisan migrate.
Can I use Redis instead of the database tables?
Yes. Switch your .env driver to redis for sessions, cache, and queues.
What's the difference between password_resets and password_reset_tokens?
Same table, different names. Laravel 8+ renamed it to password_reset_tokens.