Known issues

  • Graphics problems on some Windows machines (UI appears to run slowly because displayed content is one frame behind current content). From the command line (Start -> Command Prompt -> change directory to where Write is installed), run.\Write.exe --glRender=0 --saveconfigSubsequently Write can be started normally. If you encounter this problem please email support at
  • Additional downloads

    Write 3

  • Windows zip (32-bit)
  • Android apk
  • On Github

  • ugui - cross-platform C++ GUI library
  • usvg - C++ SVG library
  • nanovgXC - lightweight vector graphics library with GPU support
  • Write 2, last updated 2017. Note that documents saved with the latest version may not be readable by older versions.

  • Windows zip
  • Windows installer
  • Linux tar.gz
  • macOS dmg
  • Android apk
  • Wacom drivers for Win 7 and earlier: Lenovo or Generic.

    Shared Whiteboarding

    Write supports shared whiteboarding - multiple users can collaborate on a document in real-time. For performance, the server is best run on your local network - see or download this Linux executable to get started. For simple testing, you may use "" for the whiteboard server after creating an account. Write is hardcoded to use ports 7000 and 7001, so these must be open in any firewalls between the server and clients. Note that a given user can only have one connection to a whiteboard.

    In Write for iOS, enable advanced preferences, then in the Advanced -> Whiteboard server field enter the host name or IP address of the machine running `stylusboard`. After restarting Write, options to create a whiteboard and open a whiteboard will be available on the Document menu. (from the current document) will be available in the document menu, and a button to connect to a whiteboard will be available in the document list window.

    The format for whiteboard URLs is: [user[:password]@server/]whiteboard_id

    General Questions

    How can I support the development of Write?

    The best way to support the development of Write is to help spread the word: share a screenshot of your notes on Reddit, Twitter, etc., leave a review on the app store (for iOS and Android users), and, if you know anyone who might find Write useful, let them know!

    How can I insert shapes such as circles or squares?

    Shapes can be stored in and inserted from the clippings library, then stretched and rotated as needed. One way to add new shapes is to find or create the desired shape as SVG. Short bits of SVG can be copied to the clipboard as text and pasted into Write. On desktops platforms, SVG files can be dragged and dropped into Write. If you are typing SVG manually on iOS, be sure to disable Smart Punctuation in system Settings -> General -> Keyboard.

    How can I use DOI links, e.g. for journal articles, without having to use a fixed URL?

    In Windows, you can register a "doi://" URL scheme with a registry entry that launches a browser via a batch file. You may wish to replace in this example with a more useful site. You can then use links of the form "doi://10.1109/5.771073". Similar approaches may work for other platforms.

    How can I create custom page backgrounds?


    Is Write's interface available in languages other than English?

    Write includes a Simplified Chinese localization, but currently it must be selected manually on platforms other than iOS - run Write from the command line with "--locale=zh-CN --saveconfig" once.

    How can I display a cover for each document?

    Use the first page of each document for your cover design and enable "Use first page for thumbnail" in Document List preferences.

    How can I sync my files between devices?

    Write stores documents as plain files accessible by other applications, so any application that allows the user to specify which folder(s) to sync will work. On iOS, Write uses the Files app, so syncing is automatic when documents are saved in cloud folders (just install the app for your preferred service to make it available in the Files app). On Android, users have reported success with DropSync. Other options include FolderSync and SyncThing. The default folder for Write documents is /styluslabs/write if Storage permission is granted, or /Android/data/com.styluslabs.writeqt/files if not.

    What is "Linear color interpolation"?

    In short, colors in images and vector graphics files are specified and rendered in sRGB space, but any color blending, including for antialiasing, should happen in linear color space. Most applications (browsers, PDF viewers, etc.) don't do any sRGB/linear conversion and thus do all blending in sRGB space. This results in reduced antialiasing quality, i.e., more jagged lines. A simple demonstration of this is to compare a checkerboard pattern of black and white pixels to 50% opacity solid black on white (or white on black). These two will appear, correctly, to be the same color only with linear color interpolation. Write now does linear color blending by default, so lines in a Write document will look slightly thicker when viewed in other applications. If this is an issue, linear color interpolation can be disabled in Preferences.

    What are the units used in the Page Setup dialog?

    The units in the Page Setup dialog are (1/150) inch. Write attempts to detect the DPI of your device's screen so that pages are displayed actual size, but it is possible to force a specific DPI in the Advanced section of Preferences.

    How can I save a document in a different format?

    Write can save documents in four formats: .svgz (gzip-compressed SVG, the new default), .svg (uncompressed SVG), .htm (single file HTML document with <svg> elements), and .html (separate .svg file for each page). To create or save a document in a format other than the default, add the appropriate extension to the name in the New Document or Save As dialog. .html and .htm are not supported on iOS. Documents can also be exported to PDF.

    How can I convert a document to a different format from the command line?

    ./Write --exit --out <new>.<new ext> <old>.<old ext>

    How can I import a PDF?

    Included in is a script (Linux or Mac only) that can generate a Write document from a PDF by creating page images. This is less than ideal in terms of quality and file size, so you may wish to consider an alternative application for PDF annotation such as Adobe Acrobat or PSPDFKit's PDF Viewer. In theory, most PDFs could be losslessly converted to Write's SVG format, but this can be tricky.

    Does Write support typed text?

    Write can display text in SVG documents, so it is possible to paste text into Write by wrapping it in <text> tags, but the text itself cannot be edited in Write. Some simple editing functionality may be added in the future. It is worth noting that research has shown handwriting improves learning vs. typing: see, e.g., this research article

    How can I open a multi-file Write document on iOS?

    The easiest way is to save in a single file format before copying to iOS. Otherwise, all files must be copied into the "On My iPad" -> Write folder in the Files app (because iOS requires the user grant permission for each individual file in all other locations).

    How can I open a Write .svgz file in other applications?

    Some vector graphic applications, such as Inkscape, may not be able to open Write's svgz documents directly because they do not fully implement the gzip specification. In this case, the extension can be changed from .svgz to .svg.gz and a compression utility used to expand to an svg file, or the document can be saved as uncompressed svg in Write. Note that Write may not be able to reopen the file if it is saved by another application and some modifications can cause strange behavior in Write, so be sure to make a backup. Google Chrome stopped supporting svgz around version 72, see this bug. And here is a 20 year old bug regarding svgz support in Firefox.

    How can I safely edit a Write document in other applications?

    Only content inside svg.write-page will be rendered and preserved by Write. Only content inside g.write-content can be edited in Write. Inkscape at least should be able to move content into the necessary location.

    How can I reduce the file size of Write documents?

    First, make sure you are using the .svgz format. To further reduce the file size, you can try increasing the "Simplification" setting in Preferences -> Input. Also, make sure Preferences -> Advanced -> Reduce image size is enabled.

    Where are clippings stored?

    The path to the clippings document is stored in the clippingDoc key in Write's configuration file. This can changed to store the clippings document in a different location. On iOS, a path such as "Documents/clippings.html" will make the clippings doc accessible in the Files app.

    Where can I find Write's configuration file?

  • Windows: in application folder if writable; otherwise:%APPDATA%/styluslabs/write.xml
  • Mac and Linux: ~/.config/styluslabs/write.xml
  • Android:/Android/data/com.styluslabs.writeqt/data/.write.xml unless /styluslabs/.write.xml or /styluslabs/write.xml is present
  • On iOS, Write will use settings from a write.xml file placed in the "On My iPad" -> Write folder.
  • Note that Write must be closed when manually editing the configuration file or the changes will be overwritten.

    How can I change the suggested title for new documents?

    Edit the preference "newDocTitleFmt" in write.xml - see for the format to use.

    How can I customize the toolbar?

    Edit the preference "toolBars2" in write.xml. See below for possible values.

    Actions and shortcut keys (items with * cannot be placed on toolbar):
    action_Previous_Page - Previous Page: Left Arrow
    action_Next_Page - Next Page (add if at end): Ctrl+Right Arrow
    *action_Page_Down - Next Page (do not add new page): Right Arrow
    *action_Prev_Screen - Previous Screen: PageUp
    *action_Next_Screen - Next Screen: PageDown
    *action_Scroll_Up - Scroll Up: Up Arrow
    *action_Scroll_Down - Scroll Down: Down Arrow
    *action_JumpBeginning - Goto Beginning of Document: Ctrl+Home
    *action_JumpEnd - Goto End of Document: Ctrl+End
    *actionZoom_In - Zoom In: Ctrl+=
    *actionZoom_Out - Zoom Out: Ctrl+-
    *actionReset_Zoom - Reset Zoom: Ctrl+0
    actionPrevious_View - Previous View: Backspace
    actionNext_View - Next View: Shift+Backspace
    actionFullscreen - Fullscreen: F11
    actionSplitView - Split View: Ctrl+T
    *actionNew_Page_Before - New Page Before
    *actionNew_Page_After - New Page After
    *actionDeletePage - Delete Page
    actionExpand_Down - Expand Page Down
    actionExpand_Right - Expand Page Right
    *actionMove_Page - Move Page...
    actionUndo - Undo: Ctrl+Z
    actionRedo - Redo: Ctrl+Y
    actionCut - Cut Selection: Ctrl+X
    actionCopy - Copy Selection: Ctrl+C
    actionPaste - Paste from Clipboard: Ctrl+V
    actionDupSel - Duplicate Selection
    *actionSelect_All - Select All: Ctrl+A
    *actionInvert_Selection - Invert Selection
    actionDelete_Selection - Delete Selection: Delete
    actionCreate_Link - Create Link...: Ctrl+L
    *actionUngroup - ungroup (by one level) any groups in current selection
    actionNew_Document - New Document - Ctrl+N
    action_Open - Open Document...: Ctrl+O
    actionSave - Save Document: Ctrl+S
    *actionSave_As - Save As...: Ctrl+Shift+S
    actionRevert - Discard Changes... (Close Document): Ctrl+W
    actionShare_Document - Create Whiteboard...
    actionOpen_Shared_Doc - Open Whiteboard...
    actionShow_Bookmarks - Bookmarks: Ctrl+B
    actionShow_Clippings - Clippings: Ctrl+H
    actionPage_Setup - Page Setup...
    actionInsert_Image - Insert Image...
    *actionInsertDocument - Insert Document...
    *actionExport_PDF - Export PDF...
    actionPreferences - Preferences...
    actionDisable_Touch - Disable Touch Input
    actionTools_Menu - all tools on one menu
    actionSelection_Menu - all selection related actions
    actionOverflow_Menu - main menu
    iOS/Android only:
    *actionSend_Page - Send Page Image
    *actionSend_HTML - Send Document
    *actionSend_PDF - Send PDF
    actionPan - Pan
    actionDraw - Draw
    actionCustom_Pen - Custom Pen... (Pen toolbar): 9
    actionAdd_Bookmark - Add Bookmark: 0
    actionErase - Erase
    actionStroke_Eraser - Stroke Eraser (erase whole stroke)
    actionRuled_Eraser - Ruled Eraser
    actionFree_Eraser - Free Eraser (erase part of strokes)
    actionSelect - Select
    actionRect_Select - Rectangle Select
    actionRuled_Select - Ruled Select
    actionLasso_Select - Lasso Select
    actionPath_Select - Path Select
    actionInsert_Space - Insert Space
    actionInsert_Space_Vert - (Unruled) Insert Vertical Space
    actionRuled_Insert_Space - Ruled Insert Space
    Special toolbar items:
    tools - Draw, Erase, Select, Insert Space as a single menu bar
    seltools - Cut, Copy, Paste or Paste if popup selection tools enabled
    docTitle - button showing title of current document; tapping opens document browser; long press shows recent documents
    stretch - stretchable space
    separator - vertical line for visually separating groups of toolbar buttons
    Modifier keys:
    Space bar or Ctrl+Shift: Pan
    Shift: Erase
    Ctrl: Select
    Alt: Insert Space
    Additional shortcuts:
    Number keys 1-8 select saved pens


    Which devices are recommended for use with Write?

    Write is primarily developed on the Lenovo Thinkpad X1 Yoga and Apple iPad with Apple Pencil. There are now many other Windows/Linux and Android devices with stylus support - those with Wacom or N-trig digitizers are best.

    Can Write be used without an active stylus?

    Yes, although it will be necessary to write 2 to 4 times larger than normal. We recommend zooming in rather than changing the page size or ruling. Be sure the "Pan from edge" option is enabled in Input preferences, as this makes it easy to move the page by dragging in a single touch from the screen edge, eliminating the need to switch between one and two fingers.

    Legacy Android Version

    How can I crop, rotate, or edit images inserted into a document?

    To crop or remove portions of an image in Write, use the Free Erase tool. For more advanced editing, first import the image to a third party editor such as Android Photo Editor and then send to Write when done.

    How do I get newly synced or copied documents to appear in the document list?

    Go to the Advanced section of Preferences and select "Clear document list", then "Import existing documents."

    How can I restore the backup zip file created by Write?

    Use a file manager app to extract the contents of the zip file to /sdcard/styluslabs/write. Then, go to Preferences -> Advanced -> Import existing documents (if using Write Beta, this option is not need - the documents will be found automatically).

    Problems opening documents

    Even if Write itself were perfect, your documents could be lost due to your device being lost or damaged. Documents can also be become corrupt if your device suddenly loses power. Therefore, it is absolutely essential to have automated backups of all documents. The easiest backup method is to sync documents to a cloud storage service, as described above in "How can I sync my files between devices?"

    If Write is unable to open documents, the first thing to do is check the /sdcard/styluslabs/write folder using a file manager app. If the folder contains .svg files but the .html files are missing or corrupt (for example, have a size of 0), Write 3 may be able to open the documents because it has improved handling of damaged documents. If the folder is empty, or only contains recent documents, a third-party application may have deleted the documents. Because Write documents are accessible to other applications, backup is easy, but it is also possible for other applications to delete Write documents. Unfortunately, it may not be possible to recover the lost documents in this case. If you recently used a "cleaner" application to free up storage space, it may be the culprit. Please email with details of the cleaner application used. A previous version of a popular cleaner application erroneously deleted Write's documents but was fixed after the issue was reported to the application's developer.