Comparison
SandForge, SFDMU and Data Loader compared
SandForge, SFDMU and Data Loader all load records into Salesforce orgs, and all three are free. They differ in where they run, how much you configure, and how they treat a production org. Each claim below links to its source, checked on 25 October 2026. Where another tool does the job better, the table says so.
| Criterion | SandForge | SFDMU | Data Loader |
|---|---|---|---|
| What it is and where it runsTie | VS Code extension, VS Code 1.95 or later. Connects to the orgs the Salesforce CLI has authenticated. | Salesforce CLI plugin, run with sf sfdmu run. Optional Electron desktop GUI on Windows, macOS and Linux. | Salesforce desktop client for Windows and macOS, driven by wizards. Needs a Java runtime. |
| Setup and configuration | Best here Forge starts from a pasted record Id or URL. No export.json to write, no field mapping to maintain. | You write export.json: per object, a SOQL query, an operation and an external ID (a name field by default). | Pick an object and a CSV file, then map columns to fields by drag and drop or a saved map. |
| Relationships and lookups | Best here BFS discovery walks the relationship graph from that record. Lookups remapped on write, self-references in two passes. | Resolves lookups between the objects you list, circular and polymorphic ones included, through external IDs. | No discovery. Lookups take parent record Ids from the CSV, or a related external ID on upsert. |
| Org to org without CSVTie | Records move org to org over the API. CSV import stays available in Seed. | Direct org to org, no CSV in between. Can also import from and export to CSV files. | No direct transfer. Export a CSV from one org, then load that CSV into the other. |
| Production safeguards | Best here Forge refuses a production target. Seed, Sync, Autopilot and DataOps ask before each write; DELETE is blocked there. | Prompts before changing a production target unless --canmodify is set. A --simulation mode writes nothing. | Asks for a Yes before each operation, whatever the org. Hard delete skips the Recycle Bin. |
| Emails and phones in copies | Best here Forge, Sync, Autopilot: emails under .invalid, fictional phones, by default. Autopilot offers GDPR, CCPA, HIPAA or PCI-DSS masking. | Opt-in anonymization: mockFields in export.json replace the fields you choose with generated fake values. | No masking in its guide. Records load with the values the CSV holds. |
| Taking a run back | Best here Forge, Seed, Sync and Frozen Dataset runs can be removed. Autopilot's cannot: rewind to a checkpoint taken before it. | No undo of a run in its docs. Delete operations in export.json remove records from the target. | The success file lists the new record Ids. Load it into a Delete to remove those records. |
| Command line and CI | Eleven scripts run from a checkout of the repository, with Node.js 24 and pnpm 11. No published binary. | Best here Installs with sf plugins install sfdmu and runs from the command line in pipelines, with --noprompt and --json. | Command-line batch mode, configured in files, on Windows only. Reruns saved processes, such as nightly imports. |
| Large volumes | Runs execute sequentially. A command-line clone refuses more than 10,000 records unless --max-total sets another ceiling. | Uses the Bulk API from 200 records by default. Its FAQ targets small to medium volumes, not whole large orgs. | Best here Bulk API option. Its guide cites CSV files up to 150 million records; Salesforce Help still says 5 million. |
| Licence and priceTie | MIT licence. Free, no account, no paid tier. | Free, open source, Apache 2.0 per its repository. Not an official Salesforce project; support is not guaranteed. | Free, open source (BSD-3-Clause), supported by Salesforce. Enterprise, Performance, Unlimited and Developer editions. |
When another tool fits better
- Pick SFDMU for unattended jobs in a CI/CD pipeline. It installs as a Salesforce CLI plugin, while SandForge's scripts need a checkout of its repository. Pick it also when a job must write to a production org without a prompt:
--canmodifyallows that, and SandForge's scripts refuse a production target outright. A team that already keepsexport.jsonfiles can run them as they are. - Pick Data Loader to load one object in bulk from a CSV file, or to export data to CSV. Salesforce supports it officially on Windows and macOS and documents loads of millions of records, while SandForge runs sequentially and its command-line clone stops at 10,000 records by default. On Windows, its batch mode reruns saved processes such as nightly imports.
Already on SFDMU?
The Migration module imports an existing SFDMU export.json into a Sync config, so what you already built comes with you. The import writes nothing to your orgs.
Sources
Checked on 25 October 2026. Each claim in the table rests on one of these pages.
- SandForgeVS Code extension; needs VS Code 1.95+ and the Salesforce CLI
- SandForgeSupports any org authenticated in the Salesforce CLI
- SandForgeNo export.json or field mapping to write: paste a record Id, BFS discovery walks the graph, lookups remapped on write
- SandForgeSelf-referential lookups and cycles written in two passes
- SandForgeRecords move org to org over the API; CSV import is still available
- SandForgeForge refuses a production target; Seed, Sync, Autopilot and DataOps ask before every write; DELETE blocked
- SandForgeEmails written under .invalid and phones as fictional numbers by default (Forge)
- SandForgeSync and Autopilot neutralize emails and phone numbers by default; Autopilot offers GDPR, CCPA, HIPAA or PCI-DSS masking
- SandForgeForge, Seed, Sync and Frozen Dataset runs can be removed; an Autopilot run cannot, rewind to a checkpoint taken before it
- SandForgeEleven command-line scripts run from a checkout with Node.js 24 and pnpm 11; no published binary
- SandForgeCommand-line scripts refuse a production target and no flag lifts it
- SandForgeA real command-line clone refuses more than 10,000 records unless --max-total sets another ceiling
- SandForgeSandForge executes a run sequentially
- SandForgeSFDMU keeps the edge for headless CI
- SandForgeMIT licensed, no account, no paid tier
- SandForgeMigration module imports an SFDMU export.json into a Sync config; nothing is written to the orgs
- SFDMUSF CLI plugin, installed with sf plugins install sfdmu
- SFDMUDesktop GUI built on Electron, for Windows, macOS and Linux, that builds the export.json
- SFDMUSingle export.json configuration file
- SFDMUPer object: SOQL query, operation and externalId; externalId defaults to Name or the object's name field
- SFDMUAutomatically resolves references between objects; handles circular references and polymorphic lookups; external IDs of any type
- SFDMUDirect org-to-org transfer without CSV; CSV import and export also supported
- SFDMU--canmodify allows silent changes to a production target; without it the user is prompted. --simulation makes no data changes. --noprompt and --json flags
- SFDMUData anonymization with mockFields replaces chosen field values with fake ones
- SFDMUDelete operations remove records from the target, configured in export.json (no undo feature appears in the documentation index)
- SFDMUCan be run from the command line in a DevOps pipeline
- SFDMUbulkThreshold defaults to 200 records before switching to the Bulk API
- SFDMUDesigned for small to medium data volumes; not recommended for transferring entire large orgs
- SFDMURepository licence file is Apache 2.0 (the npm package and the help site's licence page say BSD-3-Clause)
- SFDMUNot an official Salesforce project; no guarantee of support
- Data LoaderClient application for bulk import or export; CSV in and out; MacOS or Windows; wizard interface; drag-and-drop field mapping; up to 5 million records; Enterprise, Performance, Unlimited and Developer editions
- Data LoaderJava Runtime Environment required; officially supported on Windows and macOS; BSD-3-Clause licence
- Data LoaderUpsert matches on an external ID or record Id; a related object's external ID or Id is used for relationship fields; deletes go by the Ids in the CSV
- Data LoaderEach operation asks for a Yes on Finish; hard-deleted records are not stored in the Recycle Bin
- Data LoaderThe success file holds the loaded records with a column of newly generated record IDs
- Data LoaderCommand-line interface supported on Windows only; batch mode reruns a series of processes
- Data LoaderCSV files up to 150,000,000 records; suited to scheduled loads such as nightly imports
- Data LoaderBulk API processing limits when the Bulk API is enabled