# SDKInitOptions.engineUrl

Part of [Initialization](https://kernstra.com/docs/web-sdk/config/init) in the Kernstra Web SDK 1.0.0 configuration reference.

- Type: `string`
- Page: https://kernstra.com/docs/web-sdk/config/init/engineurl

A self-hosted copy of `pdf-engine.bin` — self-hosting licenses only. Online licenses download the engine from the asset store the license names, and there is nothing to configure. A license that includes self-hosting may serve the binaries and the bundled fonts from its own infrastructure; today that is an **offline** license, which names no store and always self-hosts. Fetch the file once from the store — the path is its digest under the `engine` folder, as `Kernstra.assetDigests.engine` names it — and pass where you put it.

Without self-hosting in the license, `engineUrl`, `shaperUrl` and `subsetterUrl` are refused by `Kernstra.init()` with `FEATURE_NOT_LICENSED` before anything is fetched. Every load is verified: an engine binary that is not this version's fails with `ENGINE_LOAD_FAILED` and never executes. A self-hosted copy is not kept in Cache Storage: it is fetched from your URL on each load, so serve it with your own HTTP caching headers. See [Engine, binaries and fonts](https://kernstra.com/docs/web-sdk/guides/engine-assets).

```ts
await Kernstra.init({
  license: import.meta.env.KERNSTRA_LICENSE,
  engineUrl: '/assets/pdf-engine.bin',
  shaperUrl: '/assets/pdf-shaper.bin',
  subsetterUrl: '/assets/pdf-subset.bin',
});
```

Web page: https://kernstra.com/docs/web-sdk/config/init/engineurl
