{
  "slug": "miro-to-excalidraw",
  "title": "Miro Business to self-hosted Excalidraw",
  "summary": "Excalidraw is a fraction of Miro and runs on almost nothing — but it is a whiteboard, not a workspace, and that distinction decides this one.",
  "publishable": true,
  "block_reason": null,
  "freshness": {
    "state": "fresh",
    "publishable": true,
    "oldest_input_days": 46.5,
    "problems": []
  },
  "incumbent": {
    "vendor": "Miro",
    "vendor_id": "miro",
    "plan": "Business",
    "plan_id": "business",
    "amount": 20,
    "period": "month",
    "per_seat": true,
    "billed": "annual",
    "seats": 8,
    "quote": "Business For growing organizations and consultants to streamline workflows with AI $ 20 /month per member, billed yearly",
    "caveat": null,
    "source_url": "https://miro.com/pricing/",
    "verified_at": "2026-10-19",
    "needs_reverification": false
  },
  "alternative": {
    "name": "Excalidraw (self-hosted)",
    "repo": "excalidraw/excalidraw",
    "project": {
      "full_name": "excalidraw/excalidraw",
      "url": "https://github.com/excalidraw/excalidraw",
      "homepage": "https://excalidraw.com",
      "description": "Virtual whiteboard for sketching hand-drawn like diagrams",
      "stars": 134151,
      "forks": 15728,
      "open_issues": 3334,
      "license": "MIT",
      "archived": false,
      "pushed_at": "2026-10-19T09:56:20Z",
      "days_since_push": 0,
      "latest_release": {
        "tag": "v0.18.1",
        "published_at": "2026-04-21T08:43:20Z",
        "url": "https://github.com/excalidraw/excalidraw/releases/tag/v0.18.1"
      },
      "days_since_release": 181,
      "health": "active",
      "recommended": true,
      "verified_at": "2026-10-19T10:53:52.080Z"
    },
    "box": {
      "provider": "Linode",
      "name": "Nanode 1GB",
      "id": "linode:g6-nanode-1",
      "vcpu": 1,
      "ram_gb": 1,
      "disk_gb": 25,
      "bandwidth_tb": 0.98,
      "monthly_usd": 5,
      "url": "https://www.linode.com/pricing/",
      "verified_at": "2026-10-19T10:53:42.716Z"
    },
    "storage": {
      "id": "backblaze-b2",
      "name": "Backblaze B2",
      "usd_per_gb_month": 0.00695,
      "egress": "free up to 3x stored volume per month, then $0.01/GB",
      "pricing_url": "https://www.backblaze.com/cloud-storage/pricing",
      "quote": "the amount of data stored per byte-hour over the last month at a rate of $6.95/TB/30-day",
      "verified_at": "2026-09-03",
      "verified_by": "human",
      "affiliate": true,
      "gb": 15,
      "monthly_usd": 0.1
    },
    "requirements": {
      "ram_gb": 1,
      "vcpu": 1,
      "disk_gb": 20
    },
    "box_alternatives": [
      {
        "provider": "Vultr",
        "name": "vc2-1c-1gb",
        "monthly_usd": 5,
        "vcpu": 1,
        "ram_gb": 1,
        "disk_gb": 25,
        "url": "https://www.vultr.com/pricing/",
        "chosen": false
      },
      {
        "provider": "Linode",
        "name": "Nanode 1GB",
        "monthly_usd": 5,
        "vcpu": 1,
        "ram_gb": 1,
        "disk_gb": 25,
        "url": "https://www.linode.com/pricing/",
        "chosen": true
      },
      {
        "provider": "DigitalOcean",
        "name": "1 vCPU · 1 GB",
        "monthly_usd": 6,
        "vcpu": 1,
        "ram_gb": 1,
        "disk_gb": 25,
        "url": "https://www.digitalocean.com/pricing/droplets",
        "chosen": false
      }
    ],
    "migration_hours": 4,
    "maintenance_hours_per_month": 0.3
  },
  "result": {
    "computable": true,
    "inputs": {
      "seats": 8,
      "horizon_months": 36,
      "hourly_rate": 50
    },
    "incumbent": {
      "cash_monthly": 160,
      "time_monthly": 0,
      "monthly": 160,
      "one_time": 0,
      "annual": 1920
    },
    "alternative": {
      "cash_monthly": 5.1,
      "time_monthly": 15,
      "monthly": 20.1,
      "one_time": 200,
      "cash_one_time": 0,
      "time_one_time": 200,
      "annual": 241.25
    },
    "delta": {
      "monthly": 139.9,
      "upfront_to_switch": 200,
      "annual": 1678.75
    },
    "break_even_month": 2,
    "break_even_hourly_rate": 376.77,
    "totals": {
      "at_12_months": {
        "incumbent": 1920,
        "alternative": 441.25
      },
      "at_36_months": {
        "incumbent": 5760,
        "alternative": 923.75
      },
      "at_horizon": {
        "incumbent": 5760,
        "alternative": 923.75
      }
    },
    "savings": {
      "year_1": 1478.75,
      "year_3": 4836.25,
      "at_horizon": 4836.25
    },
    "verdict": "switch"
  },
  "managed": {
    "provider": "PikaPods",
    "app": "Excalidraw",
    "url": "https://www.pikapods.com/",
    "note": "Runs the same open-source software, applies updates, and takes daily encrypted backups to storage you own.",
    "source_url": "https://www.pikapods.com/apps",
    "quote": "Excalidraw Virtual collaborative whiteboard … Run Your Own From $1.8/month",
    "monthly_usd": 1.8,
    "verified_at": "2026-10-19T10:54:00.624Z",
    "migration_hours": 2,
    "result": {
      "computable": true,
      "inputs": {
        "seats": 8,
        "horizon_months": 36,
        "hourly_rate": 50
      },
      "incumbent": {
        "cash_monthly": 160,
        "time_monthly": 0,
        "monthly": 160,
        "one_time": 0,
        "annual": 1920
      },
      "alternative": {
        "cash_monthly": 1.8,
        "time_monthly": 0,
        "monthly": 1.8,
        "one_time": 100,
        "cash_one_time": 0,
        "time_one_time": 100,
        "annual": 21.6
      },
      "delta": {
        "monthly": 158.2,
        "upfront_to_switch": 100,
        "annual": 1898.4
      },
      "break_even_month": 1,
      "break_even_hourly_rate": 2847.6,
      "totals": {
        "at_12_months": {
          "incumbent": 1920,
          "alternative": 121.6
        },
        "at_36_months": {
          "incumbent": 5760,
          "alternative": 164.8
        },
        "at_horizon": {
          "incumbent": 5760,
          "alternative": 164.8
        }
      },
      "savings": {
        "year_1": 1798.4,
        "year_3": 5595.2,
        "at_horizon": 5595.2
      },
      "verdict": "switch"
    },
    "crossover": 2847.6
  },
  "curve": [
    {
      "month": 0,
      "incumbent": 0,
      "alternative": 200
    },
    {
      "month": 1,
      "incumbent": 160,
      "alternative": 220.1
    },
    {
      "month": 2,
      "incumbent": 320,
      "alternative": 240.2
    },
    {
      "month": 3,
      "incumbent": 480,
      "alternative": 260.3
    },
    {
      "month": 4,
      "incumbent": 640,
      "alternative": 280.4
    },
    {
      "month": 5,
      "incumbent": 800,
      "alternative": 300.5
    },
    {
      "month": 6,
      "incumbent": 960,
      "alternative": 320.6
    },
    {
      "month": 7,
      "incumbent": 1120,
      "alternative": 340.7
    },
    {
      "month": 8,
      "incumbent": 1280,
      "alternative": 360.8
    },
    {
      "month": 9,
      "incumbent": 1440,
      "alternative": 380.9
    },
    {
      "month": 10,
      "incumbent": 1600,
      "alternative": 401
    },
    {
      "month": 11,
      "incumbent": 1760,
      "alternative": 421.1
    },
    {
      "month": 12,
      "incumbent": 1920,
      "alternative": 441.2
    },
    {
      "month": 13,
      "incumbent": 2080,
      "alternative": 461.3
    },
    {
      "month": 14,
      "incumbent": 2240,
      "alternative": 481.4
    },
    {
      "month": 15,
      "incumbent": 2400,
      "alternative": 501.5
    },
    {
      "month": 16,
      "incumbent": 2560,
      "alternative": 521.6
    },
    {
      "month": 17,
      "incumbent": 2720,
      "alternative": 541.7
    },
    {
      "month": 18,
      "incumbent": 2880,
      "alternative": 561.8
    },
    {
      "month": 19,
      "incumbent": 3040,
      "alternative": 581.9
    },
    {
      "month": 20,
      "incumbent": 3200,
      "alternative": 602
    },
    {
      "month": 21,
      "incumbent": 3360,
      "alternative": 622.1
    },
    {
      "month": 22,
      "incumbent": 3520,
      "alternative": 642.2
    },
    {
      "month": 23,
      "incumbent": 3680,
      "alternative": 662.3
    },
    {
      "month": 24,
      "incumbent": 3840,
      "alternative": 682.4
    },
    {
      "month": 25,
      "incumbent": 4000,
      "alternative": 702.5
    },
    {
      "month": 26,
      "incumbent": 4160,
      "alternative": 722.6
    },
    {
      "month": 27,
      "incumbent": 4320,
      "alternative": 742.7
    },
    {
      "month": 28,
      "incumbent": 4480,
      "alternative": 762.8
    },
    {
      "month": 29,
      "incumbent": 4640,
      "alternative": 782.9
    },
    {
      "month": 30,
      "incumbent": 4800,
      "alternative": 803
    },
    {
      "month": 31,
      "incumbent": 4960,
      "alternative": 823.1
    },
    {
      "month": 32,
      "incumbent": 5120,
      "alternative": 843.2
    },
    {
      "month": 33,
      "incumbent": 5280,
      "alternative": 863.3
    },
    {
      "month": 34,
      "incumbent": 5440,
      "alternative": 883.4
    },
    {
      "month": 35,
      "incumbent": 5600,
      "alternative": 903.5
    },
    {
      "month": 36,
      "incumbent": 5760,
      "alternative": 923.6
    }
  ],
  "sensitivity": [
    {
      "hourly_rate": 0,
      "verdict": "switch",
      "break_even_month": 0,
      "savings_at_horizon": 5576.25
    },
    {
      "hourly_rate": 25,
      "verdict": "switch",
      "break_even_month": 1,
      "savings_at_horizon": 5206.25
    },
    {
      "hourly_rate": 50,
      "verdict": "switch",
      "break_even_month": 2,
      "savings_at_horizon": 4836.25
    },
    {
      "hourly_rate": 75,
      "verdict": "switch",
      "break_even_month": 3,
      "savings_at_horizon": 4466.25
    },
    {
      "hourly_rate": 100,
      "verdict": "switch",
      "break_even_month": 4,
      "savings_at_horizon": 4096.25
    },
    {
      "hourly_rate": 150,
      "verdict": "switch",
      "break_even_month": 6,
      "savings_at_horizon": 3356.25
    },
    {
      "hourly_rate": 200,
      "verdict": "switch",
      "break_even_month": 9,
      "savings_at_horizon": 2616.25
    }
  ],
  "tradeoffs": {
    "you_lose": [
      "Miro's templates, frameworks and the meeting facilitation tooling built on top of them",
      "Infinite-canvas features like voting, timers and Jira integration",
      "Comment threads and the review workflow around them"
    ],
    "you_gain": [
      "A static front end that costs almost nothing to run and almost never breaks",
      "Drawings stored as plain files you can version and diff",
      "MIT licensing, the most permissive on this site"
    ]
  },
  "caveats": [
    "These are not the same product. Excalidraw is a sketching tool; Miro is a workspace people run meetings in. If your team lives in Miro, this comparison is not for you.",
    "Real-time collaboration needs the separate excalidraw-room server. The estimate assumes you deploy both.",
    "There is no Miro importer. Existing boards are recreated by hand or not at all."
  ],
  "category": "whiteboard",
  "updated_at": "2026-10-19"
}