{% include anchor.html edit="true" title="Create a database" hash="create_database" %}

{% highlight "js" %}
new PouchDB([name], [options])
{% endhighlight %}

This method creates a database or opens an existing one. If you use a URL like `'http://domain.com/dbname'`, then PouchDB will work as a client to an online CouchDB instance.  Otherwise it will create a local database using [whatever backend is present](/adapters.html).

### Options

* `name`: You can omit the `name` argument and specify it via `options` instead. Note that the name is required.

**Options for local databases:**

* `auto_compaction`: This turns on auto compaction, which means `compact()` is called after every change to the database. Defaults to `false`.
* `adapter`: One of `'indexeddb'`, `'idb'`, `'leveldb'`, or `'http'`.
* `revs_limit`: Specify how many old revisions we keep track (not a copy) of. Specifying a low value means Pouch may not be able to figure out whether a new revision received via replication is related to any it currently has which could result in a conflict. Defaults to `1000`.
* `deterministic_revs`: Use a md5 hash to create a deterministic revision number for documents. Setting it to false will mean that the revision number will be a random UUID. Defaults to true.
* `view_update_changes_batch_size`: Specify how many change records will be consumed at a time when rebuilding view indexes when the `query()` method is used. Defaults to 50.
* `view_adapter`: Specify a different adapter to store the view index data.
* `purged_infos_limit`: Specify how many purged revisions we keep track of. Specifying a low value can result in Pouch not delegating older purges down to views. Defaults to `1000`.

**Options for remote databases:**

* `fetch(url, opts)`: Intercept or override the HTTP request, you can add or modify any headers or options relating to the http request then return a new fetch Promise.
* `auth.username` + `auth.password`: You can specify HTTP auth parameters either by using a database with a name in the form `http://user:pass@host/name` or via the `auth.username` + `auth.password` options.
* `skip_setup`: Initially PouchDB checks if the database exists, and tries to create it, if it does not exist yet. Set this to `true` to skip this setup.

**Notes:**

1. In IndexedDB PouchDB will use `_pouch_` to prefix the internal database names. Do not manually create databases with the same prefix.
2. When acting as a client on Node, any other options given will be passed to [request][].
3. When using the `'leveldb'` adapter (the default on Node), any other options given will be passed to [levelup][].
4. If you are using the jwt auth handler, please use the fetch option to add the required headers and handle connected logic like token refreshes.

[request]: https://github.com/mikeal/request
[levelup]: https://github.com/rvagg/node-levelup
[levelup_options]: https://github.com/rvagg/node-levelup/#options

#### Example Usage:
{% highlight "js" %}
const db = new PouchDB('dbname');
// or
const db = new PouchDB('http://localhost:5984/dbname');
{% endhighlight %}

Create an in-memory Pouch (must install `pouchdb-adapter-memory` first):

{% highlight "js" %}
const db = new PouchDB('dbname', {adapter: 'memory'});
{% endhighlight %}

Create a remote PouchDB with special fetch options:

{% highlight "js" %}
const db = new PouchDB('http://example.com/dbname', {
  fetch: function (url, opts) {
    opts.headers.set('X-Some-Special-Header', 'foo');
    return PouchDB.fetch(url, opts);
  }
});
{% endhighlight %}

For more info, check out [adapters](/adapters.html).
