{% include anchor.html edit="true" title="Compact the database" hash="compaction" %}

{% highlight "js" %}
db.compact([options], [callback])
{% endhighlight %}

Triggers a compaction operation in the local or remote database. This reduces the database's size by removing unused and old data, namely non-leaf revisions and attachments that are no longer referenced by those revisions. Note that this is a separate operation from [`viewCleanup()`](#view_cleanup).

For remote databases, PouchDB checks the compaction status at regular intervals and fires the callback (or resolves the promise) upon completion. Consult the [compaction section of CouchDB's maintenance documentation](http://couchdb.readthedocs.org/en/latest/maintenance/compaction.html) for more details.

Also see [auto-compaction](#create_database), which runs compaction automatically (local databases only).

* `options.interval`: Number of milliseconds to wait before asking again if compaction is already done. Defaults to 200. (Only applies to remote databases.)

#### Example Usage:

{% include code/start.html id="compact" type="callback" %}
{% highlight "js" %}
db.compact(function (err, result) {
  if (err) { return console.log(err); }
  // handle result
});
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="compact" type="async" %}
{% highlight "js" %}
try {
  const result = await db.compact();
} catch (err) {
  console.log(err);
}
{% endhighlight %}
{% include code/end.html %}

{% include code/start.html id="compact" type="promise" %}
{% highlight "js" %}
db.compact().then(function (result) {
  // handle result
}).catch(function (err) {
  console.log(err);
});
{% endhighlight %}
{% include code/end.html %}

#### Example Response:
{% highlight "js" %}
{ "ok" : "true" }
{% endhighlight %}
