Convert Kindle (MOBI) to DokuWiki

Turn Kindle (MOBI), the classic Kindle e-book format from the Mobipocket era, into DokuWiki, the markup used by the DokuWiki wiki engine. FileChanger runs the document conversion in one call, no local tooling to install.

In the browser

Upload a file and download the result, no pipeline required. Open the converter.

One API call

POST the file with from=mobi and to=dokuwiki, get the converted bytes back. Jump to the code.

From an agent

FileChanger ships an MCP server, so agents can run this conversion themselves. See the docs for setup.

Uploading something you care about? How to convert files safely explains what to check before you trust any converter, and Security and data handling describes exactly what we store and for how long.

Convert Kindle (MOBI) to DokuWiki in code

The same call from any language: POST the file to /api/convert, the response body is the converted file.

curl -X POST https://filechanger.io/api/convert \
  -H "X-Api-Key: fc_your_api_key_here" \
  -F "file=@input.mobi" \
  -F "from=mobi" \
  -F "to=dokuwiki" \
  -o output.dokuwiki
import requests

with open("input.mobi", "rb") as f:
    response = requests.post(
        "https://filechanger.io/api/convert",
        headers={"X-Api-Key": "fc_your_api_key_here"},
        files={"file": f},
        data={"from": "mobi", "to": "dokuwiki"},
    )

response.raise_for_status()
with open("output.dokuwiki", "wb") as out:
    out.write(response.content)
const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("from", "mobi");
formData.append("to", "dokuwiki");

const response = await fetch("https://filechanger.io/api/convert", {
  method: "POST",
  headers: { "X-Api-Key": "fc_your_api_key_here" },
  body: formData,
});

const output = await response.blob();
import java.net.http.HttpRequest.BodyPublishers;
import java.net.http.HttpResponse.BodyHandlers;
import java.nio.file.Path;

String boundary = "----FormBoundary" + System.currentTimeMillis();
byte[] fileBytes = java.nio.file.Files.readAllBytes(Path.of("input.mobi"));

String body = "--" + boundary + "\r\n"
    + "Content-Disposition: form-data; name=\"file\"; filename=\"input.mobi\"\r\n"
    + "Content-Type: application/octet-stream\r\n\r\n"
    + new String(fileBytes) + "\r\n"
    + "--" + boundary + "\r\nContent-Disposition: form-data; name=\"from\"\r\n\r\nmobi\r\n"
    + "--" + boundary + "\r\nContent-Disposition: form-data; name=\"to\"\r\n\r\ndokuwiki\r\n"
    + "--" + boundary + "--";

HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://filechanger.io/api/convert"))
    .header("X-Api-Key", "fc_your_api_key_here")
    .header("Content-Type", "multipart/form-data; boundary=" + boundary)
    .POST(BodyPublishers.ofString(body))
    .build();

HttpResponse<byte[]> response = client.send(
    request, BodyHandlers.ofByteArray());
java.nio.file.Files.write(Path.of("output.dokuwiki"), response.body());
import Network.HTTP.Client
import Network.HTTP.Client.MultipartFormData
import qualified Data.ByteString.Lazy as BL

main :: IO ()
main = do
  manager <- newManager defaultManagerSettings
  initialReq <- parseRequest "POST https://filechanger.io/api/convert"
  let req = initialReq
        { requestHeaders = [("X-Api-Key", "fc_your_api_key_here")] }
  request <- formDataBody
    [ partFileSource "file" "input.mobi"
    , partBS "from" "mobi"
    , partBS "to" "dokuwiki"
    ] req

  response <- httpLbs request manager
  BL.writeFile "output.dokuwiki" (responseBody response)

About Kindle (MOBI)

MOBI is the Kindle e-book format Amazon inherited from Mobipocket and has since retired: KDP no longer accepts MOBI uploads and Send to Kindle no longer takes MOBI files. Libraries and backup drives are still full of them, which is why the traffic runs one way, out of MOBI and into EPUB or an editable document format.

About DokuWiki

DokuWiki markup is the syntax of the DokuWiki engine, a file-based wiki popular for team documentation and intranets because it needs no database. Teams migrating docs into or out of DokuWiki convert between its markup and more portable formats.

Frequently asked questions

How do I convert Kindle (MOBI) to DokuWiki?

Upload your file in the browser converter and pick DokuWiki as the target, or POST it to /api/convert with from=mobi and to=dokuwiki. The response body is the converted file.

Is converting Kindle (MOBI) to DokuWiki free?

Yes. Every account gets 200 MB of conversions free, metered on input size. After that you pay only for what you convert, from $0.10 per GB, with no monthly fee. See pricing for the paid tiers.

Is there an API for Kindle (MOBI) to DokuWiki conversion?

Yes, this whole conversion is one POST to /api/convert (the code examples above show it in five languages), plus an MCP server so AI agents can run it directly.

Can FileChanger convert a DRM-protected MOBI file?

No. FileChanger reads DRM-free MOBI files: books you wrote yourself, Project Gutenberg downloads, and anything from a Mobipocket-era library that was published without protection. A file still carrying Amazon's DRM cannot be opened at all, and the conversion fails with an ebook error rather than producing a garbled result.

Should I convert MOBI to EPUB instead?

MOBI is the retired Kindle format: Amazon's KDP stopped accepting MOBI uploads and Send to Kindle no longer takes them, and e-readers outside the Kindle line never supported them. EPUB is the open standard every other e-reader and reading app takes, and current Kindles accept it too. Converting MOBI to DokuWiki is for getting at the text; converting MOBI to EPUB is for keeping the book readable.

Can I convert a file back into MOBI?

No. FileChanger reads MOBI and AZW3 but does not write them: the only tool that produces Kindle files is calibre, which has no library form to call. Current Kindles read EPUB, so converting to EPUB and sending that to the device covers the same need.