The asynchronous API lives on its own class, MarkdownConverterAsync, and is entirely static — there is no async counterpart on a MarkdownConverter instance. Every method returns a java.util.concurrent.CompletableFuture, so you can compose conversions, wait with a timeout, or cancel them.
Note
The async API requires Java 8 or later, which is where CompletableFuture was introduced.
Note that toFileAsync and getInfoAsync have no short overloads — pass null for options you do not need.
Converting asynchronously
importcom.groupdocs.markdown.*;publicclassAsyncStatic{publicstaticvoidmain(String[]args){// Convert to string
Stringmd=MarkdownConverterAsync.toMarkdownAsync("business-plan.docx").join();// Convert to file — options are required, pass null for the defaults
MarkdownConverterAsync.toFileAsync("business-plan.docx","report.md",null).join();// With options
DocumentConvertOptionsoptions=newDocumentConvertOptions();options.setIncludeFrontMatter(true);StringwithFrontMatter=MarkdownConverterAsync.toMarkdownAsync("business-plan.docx",null,options).join();// Get document info
DocumentInfoinfo=MarkdownConverterAsync.getInfoAsync("business-plan.docx",null).join();System.out.println(info.getFileFormat()+", "+info.getPageCount()+" pages");}}
business-plan.docx is a sample file used in this example. Click here to download it.

**Meridian Outdoor Co. — Business Plan**
FY2026 Strategic Plan
# **Table of Contents**
FY2026 Strategic Plan 1
[TRUNCATED]
Because each call returns a future, several conversions can be in flight at once. CompletableFuture.allOf waits for the whole batch:
importcom.groupdocs.markdown.*;importjava.util.concurrent.CompletableFuture;publicclassAsyncConcurrent{publicstaticvoidmain(String[]args){DocumentConvertOptionsoptions=newDocumentConvertOptions();options.setHeadingLevelOffset(1);CompletableFuture<Void>word=MarkdownConverterAsync.toFileAsync("business-plan.docx","async-word.md",options);CompletableFuture<Void>pdf=MarkdownConverterAsync.toFileAsync("business-plan.pdf","async-pdf.md",options);// Wait for both to finish
CompletableFuture.allOf(word,pdf).join();System.out.println("Both conversions complete.");}}
business-plan.docx is a sample file used in this example. Click here to download it.
**Meridian Outdoor Co. — Business Plan**
FY2026 Strategic Plan

**Table of Contents**
MeridianOutdoorCo.—BusinessPlan.........................................................................................1
[TRUNCATED]
Cancellation is carried by the returned CompletableFuture rather than by a separate token parameter. Wait with a timeout using get(long, TimeUnit), and cancel the future if it expires:
importcom.groupdocs.markdown.*;importjava.util.concurrent.CompletableFuture;importjava.util.concurrent.TimeUnit;importjava.util.concurrent.TimeoutException;publicclassAsyncCancellation{publicstaticvoidmain(String[]args)throwsException{CompletableFuture<Void>future=MarkdownConverterAsync.toFileAsync("professional-services.pdf","async-cancellation.md",null);try{future.get(30,TimeUnit.SECONDS);}catch(TimeoutExceptione){future.cancel(true);// interrupt the running conversion
System.out.println("Conversion timed out.");}}}
professional-services.pdf is a sample file used in this example. Click here to download it.
**Professional Services**
A catalog of engagements offered by Meridian Outdoor Co.

**Overview**
This catalog describes the six professional services that Meridian offers to partners, wholesalers,
[TRUNCATED]
An upload endpoint that converts in a worker thread and returns the Markdown. The instance API is synchronous, so wrap it in CompletableFuture.supplyAsync to keep the request thread free: