Skip to main content

Migrate Strapi v3 → v5 with confidence

Automated schema analysis, parity verification, and migration reporting. Know exactly what needs to change before you start.

Everything you need for a smooth migration

Comprehensive tooling to analyze, plan, and verify your Strapi upgrade.

🔍

Schema Analysis

14 rules across 7 categories detect breaking changes, deprecations, and migration requirements.

✅

Parity Verification

Compare your v3 and v5 schemas field-by-field to ensure nothing was lost in migration.

📥

Four Export Formats

Download your reports as JSON, HTML, Markdown, or CSV for any workflow.

💻

CLI + Web

Use whichever interface fits your workflow: command line or browser.

How it works

Three simple steps to understand your migration path.

1

Paste Your Schema

Export your Strapi v3 content-type schema JSON and paste it into the analyzer.

2

Review Findings

Get a detailed report of blockers, warnings, and migration actions for each content type.

3

Export & Execute

Download your migration plan and follow the phased checklist to complete the upgrade.

Under the hood

StrapiShift is not a generic diff tool. It encodes domain-specific knowledge from real Strapi v3 → v5 migrations into a deterministic rule engine. Here is exactly how it works and what it checks.

Rule Engine Architecture

When you submit a Strapi v3 schema, StrapiShift parses it into a normalized internal representation. Each content type's fields, relations, components, dynamic zones, and plugin references are extracted and classified.

The engine then evaluates 14 rules across 7 categories against every content type. Rules are context-aware: MongoDB-specific rules only fire when the schema indicates a MongoDB database engine; pagination rules only apply to collectionTypes, not singleTypes.

Each finding includes a severity classification (blocker, warning, info), actionable remediation steps, an effort estimate based on real-world migration data, and links to the relevant Strapi documentation where applicable.

// Pipeline
1. Parse v3 schema JSON
2. Classify fields, relations, components
3. Detect database engine (MongoDB/SQL)
4. Run 14 rules × N content types
5. Classify severity per finding
6. Calculate readiness score
7. Estimate effort (hours)
8. Generate phased migration checklist
9. Export to JSON / HTML / MD / CSV

All 14 Rules

Every content type is evaluated against all rules below. Rules that do not apply (e.g., MongoDB rules on a non-MongoDB schema) are skipped automatically. A content type marked "Clean" means none of these rules produced a finding.

CategoryRuleSeverityWhat It Detects
Databasedb-field-namingINFODetects v3 snake_case fields (_id, created_at, updated_at) renamed to camelCase in v5.
Databasedb-mongodb-nestedWARNINGFlags JSON fields on MongoDB that use native nested documents — v5 on SQL stores JSON as serialized text.
Databasedb-objectid-refsINFOFlags MongoDB ObjectId string references that become integer IDs in v5.
APIapi-response-envelopeWARNINGv5 wraps responses in { data: { id, attributes } } instead of flat objects.
APIapi-filter-syntaxWARNINGv5 replaces _where, _sort, _limit with filters[], sort[], pagination[] syntax.
APIapi-populate-syntaxWARNINGv5 no longer auto-populates relations, media, components, or dynamic zones.
APIapi-pagination-formatWARNINGv3 used X-Total-Count header. v5 uses meta.pagination in the response body.
Mediamedia-base64-candidateBLOCKERFlags richtext fields that may contain Base64-encoded images — a widespread v3 pattern that silently breaks.
Mediamedia-reference-formatWARNINGv3 media fields used upload plugin relations. v5 uses { type: "media" } with new API format.
Relationsrel-cardinality-syntaxWARNINGv3 model/collection syntax changed to v5 type/relation/target format.
Relationsrel-polymorphicWARNINGDetects morphTo/morphMany patterns requiring manual migration.
Relationsrel-circularINFODetects bidirectional relations (A ↔ B) requiring two-pass migration.
Authauth-user-modelWARNINGDetects user model relations — Users & Permissions plugin changed significantly in v5.
Pluginsplugin-compatibilityVARIESChecks plugin references against a 12-plugin v5 compatibility database.

Scoring & Effort Estimation

Migration Readiness (0-100%)

Calculated from the ratio of clean content types to total, weighted by blocker severity. A score of 100% means no blockers or warnings. Each blocker reduces the score significantly; warnings have a smaller impact.

Effort Estimation

Each finding is tagged Low (<1hr), Medium (1-4hr), or High (4-8hr) based on real-world migration data from the ICJIA ResearchHub Strapi v3 → v5 migration. Total effort is the sum across all findings, shown as a min-max range.

Severity Classification

Blocker — must fix before migration (e.g., Base64 images in rich text). Warning — requires attention (e.g., API envelope changes). Info — automatic or low-impact change (e.g., field renames).

Why you can trust these results

🧪

Built from real migrations

Rules are derived from a 50-item checklist produced during the ICJIA ResearchHub Strapi v3 → v5 migration — not theoretical documentation reading.

🎯

Deterministic analysis

Same input always produces the same output. No AI hallucinations, no probabilistic guessing. Pure rule-based evaluation against documented breaking changes.

🛡️

Catches undocumented issues

The Base64-in-richtext rule catches a widespread v3 pattern not mentioned in Strapi’s official migration docs. This alone has saved teams weeks of debugging.

🔍

Field-level granularity

Analysis goes beyond schema-level diffs. Every individual field is evaluated against all applicable rules, with specific remediation actions tailored to that field’s type and context.

Open Source & Auditable

StrapiShift is fully open source under the MIT license. Every rule, every scoring algorithm, and every line of analysis logic is available for inspection.

  • 62 tests across the core engine and CLI
  • 14 rules with documented detection logic
  • Real-world fixtures from production Strapi v3 instances
  • Zero data collection — analysis runs entirely in your browser

Ready to migrate?

Paste your Strapi v3 schema and get a full migration report in seconds.