How to Migrate from Notion to Outline
How to Migrate from Notion to Outline
Outline is the most mature open source Notion alternative for team wikis. It has a Notion-like editor, real-time collaboration, collections, and a comprehensive API. Here's how to migrate your Notion workspace.
What Transfers
| Content | Status |
|---|---|
| ✅ Pages and sub-pages | Native Notion import |
| ✅ Text formatting | Full support |
| ✅ Images | Imported with content |
| ✅ Tables | Supported |
| ✅ Code blocks | Supported |
| ✅ Lists and toggles | Supported |
| ⚠️ Databases | Import as tables (static) |
| ❌ Database views/filters | Not supported |
| ❌ Formulas and relations | Not supported |
| ❌ Comments | Not preserved |
| ❌ Page analytics | Not preserved |
Step 1: Export from Notion
- Go to Settings & Members → Settings
- Click Export all workspace content
- Choose Markdown & CSV format
- Include sub-pages → Export
- Download the ZIP file
Step 2: Deploy Outline
# Docker Compose
git clone https://github.com/outline/outline.git
cd outline/docker
cp .env.sample .env
# Edit .env — configure:
# - DATABASE_URL (PostgreSQL)
# - REDIS_URL
# - SECRET_KEY (generate with openssl rand -hex 32)
# - URL (your domain)
# - Authentication provider (Google, Slack, OIDC, SAML)
docker compose up -d
Requirements: PostgreSQL, Redis, S3-compatible storage (MinIO works), authentication provider (OIDC, Google, Slack, or SAML).
Step 3: Import into Outline
Outline has a native Notion import:
- Open Outline → Settings → Import
- Select Notion as the source
- Upload your exported ZIP file
- Outline maps Notion pages → Documents and sub-pages → Nested documents
- Import completes in minutes
Alternative: Markdown import
- Settings → Import → Markdown
- Upload individual
.mdfiles or folders
Step 4: Organize Collections
Notion's workspace structure → Outline:
| Notion | Outline |
|---|---|
| Team spaces | Collections |
| Top-level pages | Documents in collections |
| Sub-pages | Nested documents |
| Favorites | Stars |
| Shared pages | Public document sharing |
Create collections to mirror your Notion team spaces, then move imported documents into the appropriate collections.
Step 5: Set Up Authentication
Outline requires an external auth provider:
Google OAuth (easiest):
- Create OAuth credentials at console.cloud.google.com
- Set authorized redirect:
https://your-outline.com/auth/google.callback - Add
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRETto.env
OIDC (Keycloak, Authentik, etc.):
OIDC_CLIENT_ID=outline
OIDC_CLIENT_SECRET=your-secret
OIDC_AUTH_URI=https://auth.yourdomain.com/authorize
OIDC_TOKEN_URI=https://auth.yourdomain.com/token
OIDC_USERINFO_URI=https://auth.yourdomain.com/userinfo
Step 6: Set Up Integrations
| Notion Feature | Outline Equivalent |
|---|---|
| Slack integration | ✅ Slack plugin (search, share, notifications) |
| API | ✅ Comprehensive REST API |
| Embed blocks | ✅ Embeds (YouTube, Figma, etc.) |
| Webhooks | ✅ Webhooks |
| Templates | ✅ Document templates |
| Public sharing | ✅ Public links with custom domains |
What You'll Gain
- Self-hosted data — your docs on your server
- No per-user pricing — unlimited users
- Real-time collaboration — same as Notion
- API access — full REST API for automation
- Custom domains for public docs
- Faster editor — lightweight, focused on writing
Migration Timeline
| Day | Task |
|---|---|
| Day 1 | Deploy Outline, configure auth, import Notion export |
| Day 2 | Organize collections, set up integrations |
| Day 3-5 | Invite team, run both platforms |
| Week 2 | Primary usage moves to Outline |
| Week 3 | Sunset Notion, downgrade plan |
Compare wiki and knowledge base tools on OSSAlt — editing experience, collaboration, and self-hosting options side by side.