Conversion Service in Docker
Learn how to run Conversion Service in Docker, configure it in your browser, and convert your first file. You configure the service in Configurator Web, so a Windows machine isn’t required.
Trial license
Conversion Service 6.12 and later automatically registers a built-in trial license on every fresh installation, on Windows, in Docker, and on Linux. The service starts fully licensed, so you don’t need a license key to try Conversion Service. The trial license adds a watermark to converted files and doesn’t expire.
In the Conversion Service Configurator, the trial license appears as TRIAL-LICENSE in the Key field on the License tab.
In Docker, the container registers the trial license only when you don’t pass a license key with the LICENSEKEY or LICENSEKEY_FILE environment variable.
To convert files without a watermark, replace the trial license with a full license key.
Request full license
The built-in trial license lets you try Conversion Service at no cost. To convert files without a watermark, request a full license key.
To request a full license key, follow these steps:
- Sign up or log in to the Pdftools Portal.
- On the Products page, next to the Conversion Service, click Request license.

- On the Contact us window, fill in the requested fields, and then click Submit.
After you receive your full license key, replace the trial license with it. For more details, review Add or remove a license key.
Prerequisites
Before you start, install Docker Compose.
Run Conversion Service in Docker
To start Conversion Service, follow these steps:
-
Create a file named
docker-compose.yamland insert the following code:volumes:vol-conversion-srv: {}vol-connector-srv: {}services:conversion-service:# Conversion Service image. Converts files to PDF format.image: pdftoolsag/conversion-service:IMAGE_VERSIONvolumes:# Shared configuration: workflows, profiles, and service settings.- vol-conversion-srv:/var/www/convsrv/bin/configports:# Exposes port 13033 for the REST API and the MCP endpoint.- "13033:13033"connector-service:# Connector Service image. Provides watched folders and REST input connectors,# and creates the connection configuration that Configurator Web reads.image: pdftoolsag/connector-service:IMAGE_VERSIONvolumes:- ./watched:/app/watched-folders/- vol-connector-srv:/app/configports:# Exposes port 13034 for external communication.- "13034:13034"configurator-web:# Configurator Web image. Configures workflows, profiles, and connections# in the browser, and runs test conversions in the Playground.image: pdftoolsag/configurator-web:IMAGE_VERSIONvolumes:- vol-conversion-srv:/app/conversion-config- vol-connector-srv:/app/connector-config- ./watched:/app/watched-folders/:roports:# Exposes port 13035 on this machine only, because Configurator Web has no sign-in.- "127.0.0.1:13035:13035"Replace the following placeholder with a specific value:
IMAGE_VERSION: The Conversion Service version number, for example,6.13.0,6.13, or6. The placeholder occurs once per service, and all three services must use the same version.
macOS on Apple SiliconPdftools publishes the Conversion Service images for
linux/amd64only, so on a Mac with Apple Silicon,docker compose upfails withno matching manifest for linux/arm64/v8 in the manifest list entries. To run the images under emulation, addplatform: linux/amd64to each of the three services indocker-compose.yaml.Without a license key, containers running version 6.12.0 or later register the built-in trial license at startup, and converted files have a watermark. To convert files without a watermark, pass your full license key with the
LICENSEKEYenvironment variable:conversion-service:# ... same configuration as in the preceding example, plus:environment:# To activate Conversion Service, pass the value of the license key.LICENSEKEY: LICENSE_KEY_VALUEReplace the following placeholder with a specific value:
LICENSE_KEY_VALUE: Your Conversion Service license key.
Replace the placeholder or leave the variable outLICENSEKEYmust hold a real license key. A container that starts with theLICENSE_KEY_VALUEplaceholder still in place stops immediately and logs the fatal errorInvalid license key. Without the variable, the container falls back to the built-in trial license. -
In the directory that holds the
docker-compose.yaml, create the watched-folder directory and start the containers:mkdir watcheddocker compose up -d -
Confirm that Conversion Service is running:
curl http://localhost:13033/conversion/v1.0/restThe service reports its version and status:
{"version":"6.13.0.34931","status":"running","startTime":"2026-09-21T11:40:18.1352985+00:00","isolation":{"processCount":2,"queueLength":0},"jobCounts":{"creating":0,"processing":0,"completed":0,"total":0}}
The three containers expose the following ports:
| Port | Service | Purpose |
|---|---|---|
| 13033 | Conversion Service | Advanced API and MCP endpoint |
| 13034 | Connector Service | Simple API (REST input connectors) |
| 13035 | Configurator Web | Browser-based configuration and the Playground |
Set up licensing
By default, Conversion Service validates your license key directly, with no extra components to set up. Provide your key with the LICENSEKEY environment variable in your docker-compose.yaml. Without a key, the built-in trial license applies and converted files carry a watermark.
Optionally, route licensing through the Licensing Gateway Service (LGS) to share one license key across many Conversion Service instances or to license offline. For a Docker Compose example, review Configure containers using Docker Compose. For licensing concepts, review Conversion Service licensing.
Open Configurator Web
Configurator Web is the browser-based configuration application for Conversion Service. In Docker deployments, it replaces the Windows-based Conversion Service Configurator.
To open Configurator Web, browse to http://localhost:13035. Health & Activity opens first and reports whether Conversion Service is reachable:

The navigation on the left leads to the configuration pages, such as Workflows and Integration, and to the Playground for test conversions. For a description of each page, refer to Configurator Web.
Configurator Web has no sign-in, so the Compose file publishes port 13035 only on the local machine. To open Configurator Web from another machine, refer to Restrict access.
conversion-serviceConfigurator Web edits the same configuration files that Conversion Service and the Connector Service read, through the vol-conversion-srv and vol-connector-srv volumes. It resolves Conversion Service under the Docker Compose service name conversion-service. If you rename that service, Configurator Web can’t report its health or run Playground conversions.
Convert your first file
Convert a PDF file to PDF/A with the Archive as PDF/A-2 workflow and its default profile, either in the browser or from a terminal. The Advanced API identifies this workflow by its technical name, Archive PDF/A-2.
Docker containers can’t rasterize document content, so the Archive as PDF/A-1 workflow can cause visual differences or remove transparency. PDF/A-2 allows transparency, layers, and embedded files, so the Archive as PDF/A-2 workflow produces fewer conversion errors. For details, review Features and limitations.
- Playground
- Advanced API
-
In Configurator Web, select Playground.
-
Drag a PDF file onto the Input area, or click it to select a file.

-
In Conversion Options, confirm that Service reports Conversion Service as reachable.
-
In Workflow, select Archive as PDF/A-2, and in Profile, select default.
-
Click Convert.
Status reports the progress and lists the output file for download.
For the complete description of the conversion options, review Playground.
The following steps call the Advanced API on port 13033 and convert a local file named input.pdf. The commands use Bash syntax. On Windows, run them in Windows Subsystem for Linux (WSL) or Git Bash.
- Create a job for the
Archive PDF/A-2workflow and itsdefaultprofile:The response contains the job identifier:curl -X POST "http://localhost:13033/conversion/v1.0/rest/jobs/?workflow=Archive%20PDF%2FA-2&profile=default" \-H "Content-Type: application/json" -d '[]'{"jobId":"job1_2elmacqyg3k","status":{"code":"creating","message":"Job is being created."}} - Add the input file to the job:
curl -X POST "http://localhost:13033/conversion/v1.0/rest/jobs/JOB_ID/data/" -F "data=@input.pdf"
- Start the job:
curl -X POST "http://localhost:13033/conversion/v1.0/rest/jobs/JOB_ID:start"
- Get the job result. The request blocks until the job finishes:
The response reports the conformance level and the identifier of the output file:curl "http://localhost:13033/conversion/v1.0/rest/jobs/JOB_ID/result"{"status":"success","success":true,"events":[{"code":"Event","severity":"info","dataId":"c0izqolgbxx","message":"Converted 'input.pdf' to PDF/A-2a."}],"dataList":[{"fileName":"input.pdf","size":91207,"resultId":"c0izqolgbxx-1-tghw13pz1gm","properties":[{"name":"DOC.MIME-TYPE","value":"application/pdf"},{"name":"DOC.PAGECOUNT","value":"1"},{"name":"DOC.PROCESSED-PAGE-COUNT","value":"1"},{"name":"PDF.CONFORMANCE","value":"PDF/A-2a"}]}]}
- Download the converted file:
curl -o output.pdf "http://localhost:13033/conversion/v1.0/rest/jobs/JOB_ID/result/RESULT_ID"
- Delete the job to release its resources:
curl -X DELETE "http://localhost:13033/conversion/v1.0/rest/jobs/JOB_ID"
Replace the following placeholders with specific values:
JOB_ID: ThejobIdfrom the response of the first request. It occurs in every subsequent request.RESULT_ID: TheresultIdfrom the job result response.
Create a custom profile
Configure a custom profile that adds a QR code to converted documents. You create the profile in Configurator Web, and Conversion Service applies it after a restart.

To create the profile, follow these steps:
-
In Configurator Web, select Workflows.
-
In Archive as PDF/A-2, click Add Profile.
-
In New profile name, enter a name, for example,
awesome-test-profile, and then click Create. -
Open the new profile, and then enable Stamps & Annotations.
-
In Stamps, click Add Stamp, and then select Code.
-
In Code Type, select QR, and in Value, enter the content of the QR code, for example,
Hello world. -
In Layout, enter a value in Width and Height, for example,
3, and select a unit next to each value, for example, cm. Without a unit, Save Changes stays unavailable.With only Width and Height set, the QR code appears in the center of the page.
-
Click Save Changes before you open another page. Configurator Web discards unsaved changes without a warning.
Configurator Web displays a banner that asks you to restart the service.
-
Restart the Conversion Service container:
docker compose restart conversion-service
To convert a file with the new profile, repeat Convert your first file and select your profile instead of default. In the Advanced API, pass the profile name in the profile query parameter.
If you add a Text stamp or annotation rather than the demonstrated QR code, ensure that the selected font family is installed in the Docker container. For example, Configurator Web selects Calibri fonts for text stamps by default, but you must install the Calibri font family to finish the processing successfully.
Optional: Reuse a configuration from Windows
If you already maintain profiles in the Conversion Service Configurator on Windows, export them and import them into your Docker deployment instead of recreating them in Configurator Web. The version of Conversion Service on Windows and the version of the container images must match.
To install Conversion Service on Windows first, refer to Conversion Service on Windows Server.
Installing Conversion Service on Windows 10 or 11 is possible, although we recommend using it only to export the configuration files. Pdftools provides official support for Conversion Service on the Windows Server versions and Docker containers listed in Compatible operating systems. If you run Conversion Service on Windows 10 or Windows 11 for production purposes, you may not receive our full support.
To reuse the profiles, follow these steps:
-
Optional: If you run the Docker containers on the same machine, free ports 13033 and 13034 for the containers. In the Conversion Service Configurator, open Conversion Service, and then click Stop.
-
In the Conversion Service Configurator, open Workflows & Profiles, click the vertical three dots menu, and then click Export Profiles.

-
Select the profiles to export or click Select All, and then click Export and select the file destination.

-
In Configurator Web, select Workflows.
-
Click Import Profiles, and then select the exported file, for example,
ProfileExport-6.13.0.export.
The Import Profiles dialog box lists the profiles in the file by workflow, with every profile selected.
-
Clear the profiles that you don’t want to import, and then click Import.
If a selected profile has the same name as an existing one, choose whether to replace the original or keep both.
-
Click Save Changes before you open another page. Configurator Web discards unsaved changes without a warning.
Configurator Web displays a banner that asks you to restart the service.
-
Restart the Conversion Service container:
docker compose restart conversion-service
To import the profiles automatically when the container starts, for example, in an automated deployment, set the IMPORT_PROFILES environment variable instead. Refer to Set a profile when starting the Docker container.
Next steps
You ran Conversion Service in Docker, configured it in Configurator Web, converted a file, and created a custom profile. Review the following documentation for more details:
- For the full Docker Compose reference, including the Licensing Gateway Service and HTTPS, review Set up the service in your Docker container.
- Adapt the default profile or create a new profile for a workflow.
- Review the available workflows.
- To convert Word, Excel, and PowerPoint files, repeat Convert your first file with an Office file. For pixel-perfect layout or custom fonts, review Convert Microsoft Office files.
- To export traces, logs, and metrics to an observability backend, review OpenTelemetry (OTLP).
Integrate Conversion Service into your system in several ways: