Skip to content

Vendor Lock-in Score

How hard is it to leave your current provider? We rate every service from 1 (easy exit) to 10 (trapped) based on data export difficulty, proprietary API usage, migration path complexity, and estimated escape time. Each card lists specific lock-in factors — custom query languages, proprietary formats, ecosystem dependencies — so you can assess the real cost of switching before you're too deep to leave.

67
Low risk (1-3)
55
Medium (4-6)
18
High risk (7-10)
ShopifyE-commerce
9/10
Export: partial
Escape: 1-2 months

Product/order CSV export. Theme, apps, checkout customizations don't transfer.

Liquid templatesShopify apps ecosystemCheckout extensionsShopify Payments ratesMetafields
SplunkMonitoring
9/10
Export: hard
Escape: 2-6 months

SPL queries are proprietary. Data export via search commands but format is Splunk-specific. Must rebuild everything.

SPL query languageSaved searches and dashboardsAlert definitionsData models and accelerationsSplunk apps ecosystem3-5 year enterprise contracts
FirebaseBaaS
8/10
Export: partial
Escape: 2-4 weeks

Firestore export exists but format is proprietary. Auth users exportable.

Firestore query modelSecurity rules DSLFirebase AuthCloud Functions triggersRealtime DB
DatadogMonitoring
8/10
Export: hard
Escape: 1-3 months

Dashboard JSON exportable but metrics, logs, and monitors need recreation.

Custom dashboardsMonitor definitionsAPM instrumentationLog pipelines3-year contracts
ConvexBaaS
8/10
Export: partial
Escape: 2-4 weeks

Snapshot export to JSON. But query/mutation model is proprietary — full rewrite needed.

Proprietary query languageReactive subscriptions modelFile storage APIScheduled functionsSchema validation DSL
DynatraceMonitoring
8/10
Export: hard
Escape: 1-3 months

OneAgent instrumentation is proprietary. Davis AI baselines not exportable. Must rebuild monitoring from scratch.

OneAgent proprietary instrumentationDavis AI anomaly detection baselinesCustom dashboards (DQL)Management zonesSynthetic monitorsMulti-year contracts
HubSpotCRM
8/10
Export: partial
Escape: 1-3 months

Contact/deal data exportable as CSV. Workflows, automations, and custom objects need manual recreation.

Workflow automation definitionsCustom objects schemaHubSpot forms embedded in sitesAttribution reportingSequencesHubSpot CMS pages
RetoolInternal Tools
8/10
Export: hard
Escape: 2-6 weeks

App definitions are JSON but deeply proprietary. Database queries are SQL (portable). UI must be rebuilt.

Proprietary app builder formatComponent libraryQuery and transformer systemRetool DatabaseWorkflow definitionsCustom components API
WebflowWebsite Builder
8/10
Export: partial
Escape: 2-6 weeks

HTML/CSS export generates bloated class-heavy code. CMS data as CSV. Interactions and logic don't export.

Webflow Designer (visual IDE)CMS collections schemaInteractions/animations systemLogic workflowsE-commerce integrationMemberships
AWSCloud
7/10
Export: partial
Escape: 1-3 months

Each service has different export options. Lambda, DynamoDB, SQS are proprietary.

Lambda runtimeDynamoDBSQS/SNSCloudFormationIAM policiesS3 event triggers
JiraProject Mgmt
7/10
Export: partial
Escape: 2-6 weeks

XML/CSV export covers issues. Workflows, automations, custom fields, and board configs need manual recreation.

Custom workflow definitionsAutomation rulesJQL query languageBoard configurationsJira apps/pluginsDeep integrations (Confluence, Bitbucket)
ZapierAutomation
7/10
Export: hard
Escape: 1-4 weeks

No workflow export format. Must manually recreate each Zap in alternative tool. Account data exportable.

Proprietary Zap definitions (no export)Premium app connectionsPaths and filters logicZapier Tables dataConnected account OAuth tokens
FramerWebsite Builder
7/10
Export: partial
Escape: 1-4 weeks

No code export. Pages are Framer-specific. CMS data exportable as CSV. Must rebuild in another tool.

Framer motion/code componentsCMS schemaVisual design toolsLocalization systemNo HTML export
ZendeskCustomer Support
7/10
Export: partial
Escape: 2-4 weeks

Ticket data exportable via API/CSV. Triggers, macros, views need manual recreation. Knowledge base exportable.

Trigger and automation rulesCustom ticket fieldsZendesk apps ecosystemGuide (help center) themingAnswer Bot training dataSLA policy definitions
PineconeVector DB
7/10
Export: partial
Escape: 1-3 weeks

Vectors fetchable via API in batches. No native bulk export. Migration to pgvector or Qdrant requires custom script.

Pod/serverless billing modelProprietary index typesNamespace structureNo standard vector interchange format
ElevenLabsAI Voice
7/10
Export: partial
Escape: 1-3 weeks

REST API for TTS is portable. Cloned voices cannot be exported — must re-clone on new platform with original samples.

Custom voice clones (non-exportable)Voice IDs embedded in app configPronunciation dictionariesProject-based audio editing state
LiveblocksRealtime
7/10
Export: partial
Escape: 2-4 weeks

Storage data exportable via REST API. CRDT model and Yjs integration are Liveblocks-specific. Migration to raw Yjs or Hocuspocus possible but requires rewriting sync layer.

Liveblocks SDK in app codeStorage CRDT formatComments/notifications systemRoom provisioning model
ConvexBaaS
7/10
Export: partial
Escape: 2-4 weeks

Data exportable via snapshot export. But Convex functions, schema validation, and realtime subscriptions are proprietary — rewriting the backend is the migration.

Convex function runtimeRealtime subscription modelSchema validation in codeFile storage APIScheduled functions and cron
ClerkAuth
6/10
Export: partial
Escape: 1-2 weeks

User data exportable via API. Components and hooks are Clerk-specific.

Clerk componentsSession managementOrganization modelWebhook format
Cloudflare WorkersEdge
6/10
Export: partial
Escape: 1-3 weeks

Workers API is non-standard. KV, D1, R2 have varying export options.

Workers runtimeKV storeD1 (SQLite)R2 (S3-compatible)Durable Objects
Lemon SqueezyPayments
6/10
Export: partial
Escape: 2-4 weeks

Customer/order data exportable. Subscriptions and payment methods need re-collection.

Merchant of Record statusSubscription managementTax handlingWebhook format
AlgoliaSearch
6/10
Export: easy
Escape: 1-2 weeks

Index data exportable as JSON. Query syntax and ranking config are Algolia-specific.

Query DSLRanking formula configurationInstantSearch UI widgetsSynonyms and rulesAnalytics and A/B tests
CloudinaryMedia
6/10
Export: partial
Escape: 1-3 weeks

Original assets downloadable. Transformation URLs are proprietary and baked into content.

Transformation URL formatNamed transformationsAI tagging dataUpload presetsDelivery URLs embedded everywhere
MapboxMaps
6/10
Export: partial
Escape: 1-3 weeks

Custom tilesets exportable as MBTiles. Style JSON is Mapbox-specific but similar to MapLibre.

Mapbox GL JS (proprietary since v2)Custom styles formatGeocoding API responsesNavigation SDKTileset hosting
EdgeDBDatabase
6/10
Export: partial
Escape: 1-3 weeks

Built on PostgreSQL but uses custom schema language. Can dump to SQL but schema translation is manual.

EdgeQL query languageSchema definition language (SDL)Link/multi propertiesComputed propertiesAccess policies DSL
ConfluenceWiki
6/10
Export: partial
Escape: 1-4 weeks

Space export as XML/HTML. Macros lose interactivity. Page tree structure partially preserved.

Confluence macrosPage tree hierarchyInline commentsTeam calendarsAtlassian ecosystem integration
TwilioCommunications
6/10
Export: partial
Escape: 1-2 months

Phone numbers portable (but slow). Call/SMS logs exportable. Verify, Flex, Studio flows are proprietary.

Phone number porting (30-60 days)Twilio Studio flowsVerify service configsFlex contact center setupMessaging service configsWebhook endpoints
IntercomCustomer Support
6/10
Export: partial
Escape: 2-4 weeks

Conversation history exportable via API. Custom bots, product tours, and Fin AI configs need recreation.

Custom bot flow definitionsProduct tour configsHelp center articles formatMessenger customizationFin AI training data
LoomVideo
6/10
Export: partial
Escape: 1-2 weeks

Videos downloadable as MP4. Transcripts downloadable. Comments and reactions don't export.

Loom-specific embed URLs in docs/wikisWorkspace organizationComment threadsCTA overlaysViewer analytics
VapiAI Voice
6/10
Export: partial
Escape: 1-2 weeks

Voice agent configs exportable as JSON. Underlying STT/LLM/TTS providers are pluggable but Vapi orchestration logic is proprietary.

Vapi assistant config formatFunction calling DSLPhone number provisioning via VapiSquad/transfer logic
ContentfulCMS
6/10
Export: partial
Escape: 1-3 weeks

Content exportable via CMA/CDA APIs as JSON. Content model can be exported. Migration to Sanity, Storyblok, or Prismic requires schema remapping.

Content model/types formatRich text renderer (React)Contentful Images APIWebhooks formatSpace/environment model
PaddlePayments
6/10
Export: partial
Escape: 1-2 months

Order and subscription history exportable. Paddle is Merchant of Record — customers' billing relationship is with Paddle, not you. Migrating means re-billing customers under your entity.

Merchant of Record liabilityPaddle Checkout JSSubscription management portalTax compliance handled by PaddleWebhook event format
SegmentAnalytics/CDP
6/10
Export: partial
Escape: 2-6 weeks

Event data exportable via S3 or BigQuery destination. User profiles via Profiles API. But 400+ destination connections must be reconfigured at new provider.

Destination connection configsTransformation functionsIdentity resolution modelAudience segment definitionsProtocols tracking plan
StripePayments
5/10
Export: easy
Escape: 2-4 weeks

Customer/subscription data exportable. Payment methods require re-collection.

Payment method tokensWebhook eventsBilling portalConnect platform
OpenAIAI API
5/10
Export: partial
Escape: 1-2 weeks

Base API calls portable via OpenRouter. Fine-tuned models and Assistants are locked in.

Fine-tuned modelsAssistants API stateFunction calling schemaModel-specific prompt tuning
Auth0Auth
5/10
Export: partial
Escape: 1-2 weeks

User data exportable. Actions/Rules need rewrite. Social connections reconfigurable.

Actions pipelineCustom DB connectionsUniversal Login customizationSocial provider configs
NotionProductivity
5/10
Export: partial
Escape: 1-2 weeks

Markdown/CSV export works for text. Databases, relations, and embeds lose structure.

Linked databasesRelation/rollup propertiesEmbedded viewsTemplate systemNotion API integrations
Deno DeployEdge Hosting
5/10
Export: partial
Escape: 1-2 weeks

JS/TS code is portable. Deno KV data and APIs are proprietary.

Deno KV (proprietary)Deno-specific APIs (Deno.serve)BroadcastChannelDeno Cronnpm: specifier syntax
MixpanelAnalytics
5/10
Export: partial
Escape: 1-3 weeks

Raw event export via API. Saved reports and cohorts need manual recreation.

JQL query languageCohort definitionsCustom properties schemaFunnels and flows configurationBoard/report definitions
AmplitudeAnalytics
5/10
Export: partial
Escape: 1-3 weeks

Event export via Snowflake or S3. Behavioral cohorts and charts need rebuilding.

Behavioral cohort definitionsExperiment configurationsCustom taxonomiesChart/dashboard definitionsUser property schema
LaunchDarklyFeature Flags
5/10
Export: partial
Escape: 1-2 weeks

Flag configs exportable via API. SDK integration requires code changes.

SDK wrapper in codebaseTargeting rules formatExperimentation resultsApproval workflowsRelay proxy config
WorkOSAuth/SSO
5/10
Export: partial
Escape: 1-3 weeks

User data exportable via API. SSO connections need reconfiguration at customer level.

Admin Portal hosted UIDirectory Sync configsSSO connection metadataSCIM provisioning rulesWebhook format
SurrealDBDatabase
5/10
Export: partial
Escape: 1-3 weeks

surreal export dumps data as SurrealQL. No standard format — must transform to SQL/JSON for other databases.

SurrealQL query languageRecord links (graph model)Multi-model schema (doc+graph+relational)LIVE SELECT subscriptionsPermissions DSL
New RelicMonitoring
5/10
Export: partial
Escape: 2-4 weeks

NRQL queries are proprietary. Dashboard JSON exportable but New Relic-specific. OpenTelemetry support eases agent migration.

NRQL query languageCustom dashboardsAlert policies and conditionsSynthetic monitoring scriptsNerdGraph API integrations
1PasswordPassword Mgmt
5/10
Export: partial
Escape: 1-3 days

Export to 1PIF or CSV. Shared vaults need individual export. Attachments exported separately.

Shared vault structureWatchtower security alertsSSH agent integrationCLI/SDK integrationsTravel mode configurations
FreshdeskCustomer Support
5/10
Export: partial
Escape: 1-3 weeks

Tickets exportable via API. Automations need recreation. Knowledge base articles exportable as HTML.

Automation rules (Dispatch'r, Supervisor)Custom ticket fieldsFreddy AI trainingMarketplace appsSLA policies
CalendlyScheduling
5/10
Export: partial
Escape: 3-7 days

Booking history via API. Event types and workflows not exportable — must recreate.

Event type configurationsWorkflow automation rulesRouting formsEmbed code in websitesCalendar integrations
ImgixMedia
5/10
Export: easy
Escape: 3-7 days

Original images are on your own origin (S3, GCS). Imgix is a processing proxy. Remove imgix URLs from content.

Transformation URL parametersImgix rendering API formatPurge/cache configsURLs embedded in content everywhere
FastlyCDN/Edge
5/10
Export: partial
Escape: 1-2 weeks

CDN config (VCL) is Fastly-specific. Compute@Edge (Wasm) is portable in theory but runtime differs.

VCL (Varnish Configuration Language)Compute@Edge Wasm runtimeEdge dictionariesReal-time log streaming configsImage optimizer settings
Cloudflare D1Database
5/10
Export: easy
Escape: 1-3 days

SQLite-based. wrangler d1 export dumps to SQL. Restore to any SQLite DB or Turso/libSQL.

Workers binding API for D1Session-based read replicationWrangler-driven schema management
Vercel BlobObject Storage
5/10
Export: partial
Escape: 3-7 days

Vercel Blob is built on Cloudflare R2 but exposed via proprietary SDK. Files downloadable but URLs are Vercel-bound.

@vercel/blob SDK signaturesAuto-generated public URLs embedded in contentNo bulk export tooling
TemporalWorkflow Engine
5/10
Export: partial
Escape: 1-3 weeks

Workflow code is yours (Go/Java/TS/Python). History not portable. Must drain running instances before migrating. Open source server available for self-host.

Temporal SDK in codebaseWorkflow history formatSearch attributes schemaSchedule definitionsData converter interface
Hugging Face SpacesAI Hosting
5/10
Export: partial
Escape: 1-2 weeks

App code (Gradio/Streamlit) portable. Models on Hub downloadable. Space hardware configs and persistent storage are HF-specific.

Space hardware configs (A10G, T4)Datasets Hub formatModel Hub hostingCommunity discussions and likesInference Endpoints config
SanityCMS
5/10
Export: partial
Escape: 1-3 weeks

GROQ queries and schemas are Sanity-specific. Content exportable via API as JSON. Migrate to Contentful or Payload — schema mapping is manual.

GROQ query languagePortable Text formatSchema definition format (.ts)Sanity Studio configReal-time collaboration features
StoryblokCMS
5/10
Export: partial
Escape: 1-2 weeks

Stories exportable as JSON via API. Block schema is Storyblok-specific. Visual editor integration requires Storyblok Bridge SDK.

Block/component schema formatStoryblok Bridge visual editorDatasourcesWebhooks configStoryblok Image Service URLs
StripePayments
5/10
Export: easy
Escape: 2-4 weeks

Customer/subscription data exportable. Payment methods (cards on file) require re-collection from customers. Subscription state partially migratable.

Payment method tokensWebhook events formatBilling portalConnect platformStripe Tax configuration
Stitch DataETL
5/10
Export: partial
Escape: 1-3 weeks

Data lands in your own warehouse (Snowflake, BigQuery, etc.). Migration means switching ETL tool — reconfiguring sources, schedules, and transformations.

Source connector configsReplication key configurationsSchema mapping rulesExtraction schedule format
EncoreBackend
5/10
Export: easy
Escape: 1-2 weeks

Code is Go or TypeScript — portable. But infra-from-code annotations (encore.Service, pubsub.Topic) are Encore-specific. Need to replace with real infrastructure.

Encore service annotationsInfrastructure-from-code declarationsEncore Cloud deploymentBuilt-in tracing integration
VercelHosting
4/10
Export: easy
Escape: 1-2 days

Next.js runs anywhere. Edge functions are Vercel-specific.

Edge middlewareImage optimization APIAnalyticsVercel KV/Blob/Postgres
LinearProject Mgmt
4/10
Export: easy
Escape: 3-5 days

CSV/JSON export for issues. Cycles, views, and workflows need manual recreation.

Custom workflowsTriage systemCycles and roadmapsKeyboard-driven UX habits
InngestBackground Jobs
4/10
Export: easy
Escape: 3-7 days

Functions are your code. Replace SDK with BullMQ, SQS, or self-host Inngest.

Inngest SDK wrapperEvent-driven function modelStep function orchestrationCron definitions format
MuxVideo
4/10
Export: easy
Escape: 3-7 days

Original video files downloadable. Playback URLs are Mux-specific. Player is open source.

Playback ID URLsAsset processing pipelineData/analytics APISigned URL generationThumbnail/storyboard URLs
TemporalWorkflow Engine
4/10
Export: partial
Escape: 1-3 weeks

Worker code (Go/Java/TS/Python) is yours. Workflow history is Temporal-specific. Must drain running workflows.

Temporal SDK integrationWorkflow history formatNamespace configurationSearch attributes schemaSchedule definitions
PagerDutyIncident Mgmt
4/10
Export: partial
Escape: 3-7 days

Service configs and escalation policies exportable via API. Incident history available as JSON.

Escalation policy definitionsEvent orchestration rulesService dependency graphWebhook integrationsOn-call schedule patterns
HashiCorp VaultSecrets Mgmt
4/10
Export: partial
Escape: 1-3 weeks

Secrets readable via API. Policies exportable as HCL. Auth method configs need recreation.

Vault policy language (HCL)Auth method configurationsDynamic secret engine configsNamespace hierarchy (enterprise)Transit encryption keys
InfluxDBDatabase
4/10
Export: partial
Escape: 1-2 weeks

Line protocol data exportable. InfluxQL/Flux queries are proprietary. Dashboards need recreation.

Flux query language (v2)InfluxQL (v1)Telegraf agent configsDashboard definitionsTask/alert definitionsRetention policies
GitLabDev Platform
4/10
Export: easy
Escape: 3-7 days

Standard Git repos. Issues, MRs exportable via API. CI/CD config (.gitlab-ci.yml) needs rewrite for other CI systems.

.gitlab-ci.yml syntaxGitLab Container RegistryGitLab Pages configAuto DevOps pipelinePackage Registry
BitbucketDev Platform
4/10
Export: easy
Escape: 2-5 days

Standard Git repos. Pipelines (bitbucket-pipelines.yml) need rewrite. Issues exportable via API.

bitbucket-pipelines.yml syntaxJira deep integrationDeployment permissions modelPipe ecosystem (reusable CI steps)
CrispCustomer Support
4/10
Export: partial
Escape: 3-7 days

Conversation history via API. Knowledge base exportable. Chatbot scenarios are proprietary format.

Chatbot scenario builderKnowledge base formatCampaign definitionsPlugin/integration configs
ReplicateAI API
4/10
Export: partial
Escape: 3-7 days

Public model predictions portable. Custom Cog models can be exported. Migrate to Modal, Beam, or self-hosted GPU with model weights.

Cog model packaging formatPrediction webhook formatModel version IDsDeployments API
ModalServerless GPU
4/10
Export: easy
Escape: 3-7 days

Python functions run anywhere. Container images are standard. Volumes are ext4 filesystems. Migrate to RunPod, Lambda Labs, or self-hosted GPU.

@modal.function decoratorModal Volume formatSecrets managementCron/schedule definitionsWebSocket streaming pattern
PrismaAccelerateDatabase Proxy
4/10
Export: partial
Escape: 1-2 days

Remove Prisma Accelerate by swapping back to direct DB connection string. Query result caching config is Accelerate-specific.

Connection string formatCache hint annotations in queriesAccelerate-specific query timing
TinybirdAnalytics
4/10
Export: easy
Escape: 3-7 days

Data Sources are ClickHouse tables — exportable as Parquet, CSV, or JSON. Pipes (SQL transformations) are standard SQL. Migrate to self-hosted ClickHouse.

Tinybird Pipe abstraction layerEndpoint publishing modelCopy Pipe / Sink Pipe configsToken-based access control model
MongoDB AtlasDatabase
3/10
Export: easy
Escape: 1-3 days

mongodump/mongorestore. Standard MongoDB protocol.

Atlas SearchChartsTriggersData API
PlanetScaleDatabase
3/10
Export: easy
Escape: 1-2 days

Standard MySQL. mysqldump works. Branching is proprietary.

Schema branchingBoost (caching)Insights
NetlifyHosting
3/10
Export: easy
Escape: 1-3 days

Static files + serverless functions. Functions need minor rewrites.

Netlify FunctionsFormsIdentityEdge handlers
TursoDatabase
3/10
Export: easy
Escape: 1-2 days

libSQL is SQLite-compatible. Dump and restore to any SQLite DB.

Embedded replicas SDKMulti-region replicationTurso CLIlibSQL extensions
AnthropicAI API
3/10
Export: easy
Escape: 2-5 days

API calls portable via OpenRouter or direct swap. Prompts are just text.

Claude-specific prompt tuningTool use schema differencesSystem prompt conventionsModel-specific capabilities (artifacts, vision)
RenderHosting
3/10
Export: easy
Escape: 1-2 days

Docker containers + managed Postgres. Standard tools work for migration.

render.yaml configRender Disks formatBlueprint specPreview environments
Trigger.devBackground Jobs
3/10
Export: easy
Escape: 2-5 days

Open source — self-host or refactor tasks to any queue system.

Trigger SDK wrapperTask definitions formatConcurrency controlsRun metadata
UpstashServerless Data
3/10
Export: easy
Escape: 1-3 days

Standard Redis protocol. RDB export available. Kafka topics are standard.

REST API for Redis (non-standard)QStash webhook queueUpstash-specific rate limitingGlobal replication config
CockroachDBDatabase
3/10
Export: easy
Escape: 2-5 days

PostgreSQL wire-compatible. pg_dump works for most schemas. CRDB-specific features (AS OF SYSTEM TIME, multi-region) need rewrite.

Multi-region LOCALITY configAS OF SYSTEM TIME queriesCockroachDB-specific SQL extensionsServerless Request Unit model
YugabyteDBDatabase
3/10
Export: easy
Escape: 2-5 days

PostgreSQL-compatible (YSQL). pg_dump works. Cassandra-compatible API (YCQL) is harder to migrate.

YCQL (Cassandra) APITablet splitting configGeo-partitioning setupCDC configuration
TiDBDatabase
3/10
Export: easy
Escape: 2-5 days

MySQL wire-compatible. mysqldump works. TiFlash analytics engine is proprietary.

TiFlash columnar storeTiDB-specific SQL hintsPlacement rulesTiCDC configuration
MedusaE-commerce
3/10
Export: easy
Escape: 3-7 days

PostgreSQL database with standard schema. npm packages are your code. Modules are pluggable.

Medusa module systemSubscriber/workflow patternsAdmin UI customizations
WindmillAutomation
3/10
Export: easy
Escape: 3-7 days

Scripts are standard Python/TypeScript/Go. Flows export as JSON. Self-host option available.

Flow definition formatResource types schemaSchedule definitionsApp builder layouts
n8nAutomation
3/10
Export: easy
Escape: 2-5 days

Workflows export as JSON. Self-host option. Credential encryption keys needed for migration.

Workflow JSON formatCommunity node dependenciesCredential encryptionExecution history format
Elastic CloudSearch/Monitoring
3/10
Export: easy
Escape: 3-7 days

Elasticsearch is open source (AGPL). Snapshot/restore for data. Kibana dashboards export as NDJSON.

Kibana dashboard formatILM policiesMachine learning jobs (Platinum)Watcher alert definitions
Terraform CloudIaC
3/10
Export: easy
Escape: 1-3 days

State files are standard Terraform format. Download and use with any backend (S3, GCS, local).

Sentinel policies (proprietary)Run triggers between workspacesVCS integration configVariable sets
KongAPI Gateway
3/10
Export: easy
Escape: 2-5 days

Kong OSS is fully functional. Config exportable via deck (decK). Routes, services, plugins all in YAML.

Enterprise-only plugins (OIDC, Vault)Kong Manager UIVitals analyticsDev Portal contentRBAC policies
SendGridEmail
3/10
Export: easy
Escape: 2-5 days

Standard SMTP. Contact lists exportable as CSV. DNS records (SPF, DKIM) transferable to any provider.

IP reputation (non-transferable)Marketing campaign templatesEmail validation APIEvent webhook integrations
ClickHouseDatabase
3/10
Export: easy
Escape: 2-5 days

ClickHouse is open source. Data export via clickhouse-client in CSV, JSON, or native format. Schema is SQL.

ClickHouse-specific SQL extensionsMaterialized view definitionsReplicatedMergeTree configurationsDictionaries setup
CircleCICI/CD
3/10
Export: easy
Escape: 2-5 days

Config is .circleci/config.yml — rewrite for other CI. Build artifacts downloadable. Orbs are CircleCI-specific.

.circleci/config.yml syntaxOrb ecosystemTest splitting configurationResource class definitionsContext and secrets management
DigitalOceanCloud
3/10
Export: easy
Escape: 2-5 days

Droplets are standard Linux VMs. Managed DB uses standard engines. Spaces is S3-compatible.

App Platform buildpacksManaged database configsVPC networking setupLoad balancer configsFirewall rules format
BudibaseInternal Tools
3/10
Export: easy
Escape: 2-5 days

Open source — self-host or export app definitions. Internal DB is CouchDB with JSON export.

Budibase component systemAutomation definitionsInternal CouchDB data modelPlugin format
AppwriteBaaS
3/10
Export: easy
Escape: 3-7 days

Open source, self-hostable. MariaDB database exportable. Auth users exportable via API.

Appwrite SDK calls in codeStorage bucket policiesFunction runtime environmentRealtime subscriptions
WeaviateVector DB
3/10
Export: easy
Escape: 2-5 days

Open source (BSD-3). Backup module exports to S3/GCS/Azure. Self-host the same image.

GraphQL query APIModule-based vectorizer configClass/property schema format
FathomAnalytics
3/10
Export: easy
Escape: 1-2 days

Dashboard exports as CSV. API access to stats. No personal data collected — migration is just DNS/script swap.

Dashboard configurationsCustom domains setupEmail reports
PrismaORM
3/10
Export: easy
Escape: 2-5 days

Database data is standard SQL. Prisma schema converts to standard SQL migrations. Switch to Drizzle, Knex, or raw SQL with the same database.

Prisma schema format (.prisma)Prisma Client generated typesPrisma Accelerate connection poolingPrisma Pulse event streaming
XataDatabase
3/10
Export: easy
Escape: 1-2 days

Built on PostgreSQL. pg_dump exports all data. Branching is Xata-specific but data is portable SQL.

Xata search index configsBranch-per-environment modelSchema history management
dbt CloudAnalytics
3/10
Export: easy
Escape: 1-3 days

dbt models are SQL files in your Git repo. Migrate to dbt Core (open source, free). Job configs and environments need recreation.

Job scheduling configurationSemantic Layer definitionsExplorer lineage visualizationsCI/CD integration config
SupabaseBaaS
2/10
Export: easy
Escape: 1-3 days

Standard PostgreSQL. pg_dump works. Auth is open source.

Edge Functions (Deno)Realtime subscriptionsStorage policies
RailwayHosting
2/10
Export: easy
Escape: 1 day

Standard Docker containers. PostgreSQL with pg_dump.

Railway CLIConfig variables format
Fly.ioHosting
2/10
Export: easy
Escape: 1-2 days

Standard Docker containers + Postgres. Fly-specific only: fly.toml config.

fly.toml config formatFly proxy featuresInternal DNS
PostHogAnalytics
2/10
Export: easy
Escape: 1-3 days

Events exportable via API. Self-hosted option = zero lock-in.

Feature flag configurationsExperiment resultsSession recordings format
NeonDatabase
2/10
Export: easy
Escape: 1-2 days

Standard PostgreSQL. pg_dump works. Branching is Neon-specific.

Branching (copy-on-write)Autoscaling to zeroNeon CLI
ResendEmail
2/10
Export: easy
Escape: 1 day

Standard SMTP/API. Switch API calls to any email provider. Domain DNS stays.

React Email templates (portable)Webhook formatAudience/contacts list
MeilisearchSearch
2/10
Export: easy
Escape: 1-2 days

Open source, self-hostable. Dump export covers everything. JSON import/export.

Meilisearch Cloud featuresRanking rules formatTenant tokens
FlagsmithFeature Flags
2/10
Export: easy
Escape: 1-3 days

Open source — self-host or export flag configs via API.

SDK integrationSegment definitionsChange request workflows
Payload CMSCMS
2/10
Export: easy
Escape: 1-3 days

Data lives in your own MongoDB/PostgreSQL. Collections are standard database tables. Config is code.

Payload config formatCustom field hooksAccess control DSL
DirectusCMS
2/10
Export: easy
Escape: 1-2 days

Headless CMS that wraps your existing SQL database. Remove Directus and the data stays in your DB.

Directus system tablesFlow automation definitionsCustom display/interface extensions
GrafanaMonitoring
2/10
Export: easy
Escape: 1-3 days

Dashboards export as JSON. Data sources are standard (Prometheus, Loki, etc). Self-host the same binary.

Dashboard JSON formatAlert rule definitionsPlugin dependenciesGrafana-specific variables syntax
Backblaze B2Object Storage
2/10
Export: easy
Escape: hours to days (bandwidth-bound)

S3-compatible API since 2020. rclone or aws-cli for migration. Native API also available.

B2 native API (if used instead of S3)Application Key scopingLifecycle rules format
Pulumi CloudIaC
2/10
Export: easy
Escape: 1-2 days

Stack state downloadable. Switch to self-managed backend (S3, Azure Blob). Code is yours.

Pulumi Cloud state backendDeployment historyRBAC policiesStack tags and config
Docker HubContainer Registry
2/10
Export: easy
Escape: 1-2 days

docker pull + docker push to any OCI-compatible registry. Standard container image format.

Docker Hub automated builds (deprecated)Docker Scout vulnerability dataOrganization team structure
GhostCMS
2/10
Export: easy
Escape: 1-2 days

JSON export covers all content. Themes are Handlebars templates. Self-host is identical to Ghost(Pro).

Handlebars theme engineGhost members/subscriptions systemGhost-specific helpers
Cal.comScheduling
2/10
Export: easy
Escape: 1-2 days

Open source, self-hostable. PostgreSQL database with Prisma. All data in standard tables.

Cal.com app integrationsWorkflow definitionsEvent type configs
Bunny.netCDN
2/10
Export: easy
Escape: 1-2 days

Standard CDN — update CNAME records to new provider. Storage zone files downloadable via FTP/API.

Pull zone configurationsEdge rulesBunny DNS recordsStream video transcoding
KeyCDNCDN
2/10
Export: easy
Escape: 1 day

Standard CDN with CNAME-based setup. Switch DNS records to new CDN provider.

Zone configurationsZonealias setupOrigin shield configCustom SSL certificates
PocketBaseBaaS
2/10
Export: easy
Escape: 1-2 days

Single SQLite file — copy the file. Go binary is self-contained. Zero infrastructure dependency.

PocketBase SDK/API callsCollection schema formatHook/middleware system (Go or JS)
Vercel KV (Upstash)Database
2/10
Export: easy
Escape: 1-2 days

Backed by Upstash Redis. Standard Redis protocol. RDB dump and restore to any Redis-compatible store.

Vercel KV SDK syntax (thin wrapper over Redis)Project-bound provisioning
Vercel Postgres (Neon)Database
2/10
Export: easy
Escape: 1-2 days

Backed by Neon. Standard Postgres — pg_dump/pg_restore work. Full credentials accessible.

Vercel-managed connection stringsProject-scoped provisioning UI
QdrantVector DB
2/10
Export: easy
Escape: 1-3 days

Open source (Apache 2.0). Snapshots dump full collection. Self-host the same binary or migrate to Weaviate/Milvus.

Qdrant filter DSL (proprietary but documented)Collection config format
PlausibleAnalytics
2/10
Export: easy
Escape: 1-2 days

Open source (AGPL). Stats and event data exportable via API and CSV. Self-host with the same binary. Privacy-preserving design means no per-user data to migrate.

Dashboard layout preferencesGoal/funnel definitions
Mistral AIAI API
2/10
Export: easy
Escape: 1-3 days

OpenAI-compatible API. Change base URL and API key. Open weights models (Mixtral, Mistral 7B) available for self-hosting via Ollama.

Prompt tuning for Mistral-specific behaviorModel-specific context window usageLe Chat integration (if used)
Together AIAI API
2/10
Export: easy
Escape: 1-2 days

OpenAI-compatible API. Hosts open source models. Switch to any compatible provider by changing endpoint.

Fine-tuned model uploadsCustom inference configsBatch job format
Fireworks AIAI API
2/10
Export: easy
Escape: 1-2 days

OpenAI-compatible API. Deploys open source and private models. Base URL swap to migrate.

Deployed model IDsCustom model configsFunction calling format differences
PocketBaseBaaS
2/10
Export: easy
Escape: 1-2 days

Single SQLite file — copy it. API is yours. Self-contained binary with no external dependencies.

PocketBase collection schema JSONHook system (Go or JS hooks)SDK API calls
AirbyteETL
2/10
Export: easy
Escape: 1-3 days

Open source (MIT/ELv2). Self-host with Docker Compose. Config exportable. Connector catalog is open source. Data lands in your warehouse.

Connection YAML config formatCustom connector Airbyte ProtocolAirbyte Cloud workspace settings
ElectricSQLDatabase/Sync
2/10
Export: easy
Escape: 2-5 days

Your data stays in Postgres — Electric is a sync layer, not a database. Remove Electric, your Postgres is unchanged. Client-side sync code needs replacement.

Shape-based sync rulesClient-side sync library APIConflict resolution logic
Stack AuthAuth
2/10
Export: easy
Escape: 1-3 days

Open source, self-hosted. User data in your Postgres. Export users table directly. OAuth configs are standard. Components need replacement but auth logic is yours.

React component libraryDashboard UIWebhook event format
LangfuseAI/ML
2/10
Export: easy
Escape: 1-3 days

Open source, self-host. Trace data in Postgres + ClickHouse — export directly. SDK decorators are thin wrappers. Switch to OpenTelemetry native tooling.

Trace API formatPrompt management UIEvaluation scorer configs
CerebrasAI/ML
2/10
Export: none
Escape: 1 hour

OpenAI-compatible API — change the base URL to switch provider. No data stored. Model weights are open (Llama). Zero lock-in on API layer.

Latency expectations (2000+ tok/s hard to match elsewhere)Custom batch inference API
TwentyCRM
2/10
Export: easy
Escape: 1-3 days

Open source, self-hosted. Data in PostgreSQL — pg_dump exports everything. GraphQL API is standard. Custom objects exportable as JSON.

Custom object schemasGraphQL query patternsWebhook configurations
HonoWeb Framework
1/10
Export: easy
Escape: 1 day

Standard Web API (Request/Response). Runs on any JS runtime. Zero lock-in by design.

Hono-specific middleware (minimal)Helper functions
MinIOObject Storage
1/10
Export: easy
Escape: hours to days (bandwidth-bound)

S3-compatible API. Any S3 tool (aws-cli, rclone, mc) transfers data. Zero proprietary format.

MinIO Console UI preferencesILM policies (standard S3)
Cloudflare R2Object Storage
1/10
Export: easy
Escape: hours to days (bandwidth-bound)

S3-compatible API. rclone or aws-cli sync to any S3-compatible service. Zero egress fees make migration cheap.

R2-specific access keysBucket-level CORS config
Drizzle ORMORM
1/10
Export: easy
Escape: hours

Drizzle is just TypeScript code wrapping SQL. Schema is standard SQL tables. Switch to Prisma, Kysely, or raw queries with zero data migration.

Drizzle syntax in queries
BiomeBuild Tools
1/10
Export: none
Escape: 1-2 hours

Single config file (biome.json). Can always go back to ESLint + Prettier. No data, no vendor dependency. Pure dev tooling.

biome.json config formatCustom rule configurations
OpenRouterAI/ML
1/10
Export: none
Escape: 30 minutes

OpenAI-compatible API. Change base URL to direct provider. No data stored. No custom formats. Pure routing layer.

Multi-model routing logic in your codeOpenRouter-specific model IDs

Explore other areas