# @putout/plugin-remove-unused-variables

> 🐊Putout plugin adds ability to find and remove unused variables

Latest version **14.1.1** (published 2025-12-03) · MIT license · 0 weekly downloads

## Install

```sh
npm install @putout/plugin-remove-unused-variables
pnpm add @putout/plugin-remove-unused-variables
yarn add @putout/plugin-remove-unused-variables
bun add @putout/plugin-remove-unused-variables
```

## Health

**Score 55/100 (C)** — status: stable.

Positive: esm support; no vulnerabilities; high maintenance score.

Warnings: low downloads; no types.

## Facts

| | |
|---|---|
| Version | 14.1.1 |
| Published | 2025-12-03 |
| First published | 2019-01-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | ESM + CommonJS |
| Node | >=20 |
| Dependencies | 0 |
| Unpacked size | 40 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 796 |
| Author | coderaiser |
| Maintainers | coderaiser |
| Keywords | putout, putout-plugin, plugin, remove, unused, variables |

## Links

- npm: https://www.npmjs.com/package/@putout/plugin-remove-unused-variables
- Repository: https://github.com/coderaiser/putout
- Homepage: https://github.com/coderaiser/putout/tree/v40.15.1/packages/plugin-remove-unused-variables#readme
- Issues: https://github.com/coderaiser/putout/issues
- npm.io page: https://npm.io/package/@putout/plugin-remove-unused-variables

## Recent versions

- 14.1.1 (latest) — 2025-12-03
- 14.1.0 — 2025-07-23
- 14.0.0 — 2025-05-31
- 13.0.0 — 2025-05-21
- 12.1.0 — 2025-03-08
- 12.0.0 — 2025-02-06
- 11.0.0 — 2025-01-22
- 10.1.0 — 2024-10-27
- 10.0.0 — 2024-10-26
- 9.2.0 — 2024-07-13
- 9.1.0 — 2024-06-10
- 9.0.0 — 2024-03-06
- 8.1.0 — 2023-12-20
- 8.0.0 — 2023-12-11
- 7.0.0 — 2023-09-14
- … 103 more at https://npm.io/package/@putout/plugin-remove-unused-variables/versions

## README

# @putout/plugin-remove-unused-variables [![NPM version][NPMIMGURL]][NPMURL]

[NPMIMGURL]: https://img.shields.io/npm/v/@putout/plugin-remove-unused-variables.svg?style=flat&longCache=true
[NPMURL]: https://npmjs.org/package/@putout/plugin-remove-unused-variables "npm"

> A variable is a container for a value, like a `number` we might use in a sum, or a `string` that we might use as part of a sentence.
>
> (c) [MDN](https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/Variables)

🐊[**Putout**](https://github.com/coderaiser/putout) plugin adds ability to find and remove the variables that are declared, but:

- not passed as **argument** to a **function**;
- not used as **operand** in **expression**;

That is **unused variables**. Most likely it is a leftovers due to incomplete transforming of the code. Such variables take up space and gives no value so they must be removed. Merged with [`@putout/plugin-variables`](https://www.npmjs.com/package/@putout/plugin-variables).

☝️*Remember, when you [writing a transform](https://github.com/coderaiser/putout/tree/master/packages/engine-runner#readme) you can skip all parts related to **removing unused variables** and just reuse current **plugin** it will make your code simpler and less error prone.*

☝️*No, you cannot just look at [`referenced` and `constant` fields](https://github.com/jamiebuilds/babel-handbook/blob/master/translations/en/plugin-handbook.md#user-content-bindings) to determine if you can remove variable and [here is why](https://putout.cloudcmd.io/#/gist/4277392f74b56b74911b779c9624af8d/cfec476f857dfb4f4c7a6247bdcc6b521fed8e70) one of the biggest plugins exists*.

## Install

```
npm i @putout/plugin-remove-unused-variables -D
```

## Rule

Rule `remove-unused-variables` is enabled by default, to disable add to `.putout.json`:

```json
{
    "rules": {
        "remove-unused-variables": "off"
    }
}
```

## ❌ Example of incorrect code

```js
const a = 'hello';
const b = 'world';

console.log(a);
```

## ✅ Example of correct code

```js
const a = 'hello';
console.log(a);
```

## Comparison

Linter | Rule | Fix
--------|-------|------------|
🐊 **Putout**| [`remove-unused-variables`](https://github.com/coderaiser/putout/tree/master/packages/plugin-remove-unused-variables#readme)| ✅
⏣ **ESLint** | [`no-unused-vars`](https://eslint.org/docs/rules/no-unused-vars) | ❌

## License

MIT

---
_Source: https://npm.io/package/@putout/plugin-remove-unused-variables · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
