Cargo build output can grow quickly during local Rust development because debug builds, test binaries, generated docs, and incremental compiler state accumulate under target/. Removing that generated output frees disk space and forces the next build to start from a fresh artifact directory.
Plain cargo clean works from a package or workspace root and removes generated artifacts, not source files, Cargo.toml, or Cargo.lock. Cargo chooses the target directory from project config, CARGO_TARGET_DIR, or --target-dir, so confirm the active artifact directory before cleaning a project that uses a shared build cache.
Use cargo clean --dry-run when the cleanup should be previewed before deletion. A follow-up cargo build recreates target/ and confirms the source tree still compiles after the cleanup.
Steps to clean Rust build artifacts with Cargo:
- Open a terminal in the Rust package or workspace root to clean.
The directory should contain Cargo.toml. For a workspace, start at the workspace root when the shared target/ directory should be removed.
- Check that the default target directory contains generated artifacts.
$ ls target CACHEDIR.TAG debug
If target/ does not exist, the default target directory already has no generated artifacts to remove.
- Preview the cleanup without deleting files.
$ cargo clean --dry-run Summary 23 files, 8.4MiB total warning: no files deleted due to --dry-runCopy release binaries, generated documentation, or timing reports out of target/ before continuing if they are deliverables that must be archived.
- Remove Cargo's generated artifacts.
$ cargo clean Removed 23 files, 8.4MiB totalUse cargo clean --release when only release-profile artifacts should be removed, or cargo clean --target-dir path/to/target when the project uses a custom target directory.
- Confirm that the default target directory is gone.
$ ls target ls: cannot access 'target': No such file or directory
- Rebuild the package to recreate generated artifacts.
$ cargo build Compiling hello-rust v0.1.0 (/work/hello-rust) Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.20sRun cargo test instead when the cleanup is part of a dependency change, release check, or troubleshooting pass that needs test coverage.
Related: How to run Rust tests with Cargo
Related: How to check Rust code with Cargo
Mohd Shakir Zakaria is a cloud architect with deep roots in software development and open-source advocacy. Certified in AWS, Red Hat, VMware, ITIL, and Linux, he specializes in designing and managing robust cloud and on-premises infrastructures.