adel.dev/toolsSublime Text · Notion Save

Save to Notion.

A home for your notes. One less open tab.

Send the current file or unsaved note to your Notion database. The tab closes after a local backup; the upload runs in the background, without waiting for the network.

For Sublime Text 2, with compatibility for 3 & 4 · Your own Notion API token

One action. Back to your work.

#

Right-click inside the editor or on a tab and choose Save to Notion. The full buffer becomes a new page in your chosen database.

  • Works with saved files and unsaved notes
  • Closes the tab without a save dialog
  • Keeps a local copy until the upload succeeds
  • Retries connection failures in the background
Sublime Text · interactive preview
quick-notes.txt●
1# An idea for later
2Keep the useful bits.
3Make room for the next thing.
4Pick this up in Notion.
Try “Save to Notion” in the preview.

Illustrative preview. No data is sent and no Notion connection is needed here.

Install the plugin

#
  1. Download the package

    Download the release ZIP from the public GitHub repository, then extract it.

    Download source ZIP

    Version 1.0.0 · MIT license · No GitHub sign-in required.

  2. Add it to Sublime Text

    In Sublime, open Preferences → Browse Packages…. Rename the extracted folder to NotionSave and move it into the Packages folder.

    The file notion_save_plugin.py should sit directly inside Packages/NotionSave/, alongside the notion_save folder. Restart Sublime.

    Requires curl with modern HTTPS support. macOS includes curl; on Windows or Linux, install it if needed and set its path in the plugin settings.

  3. Connect your Notion database

    Create an internal connection in Notion’s integration settings with Read content, Insert content, and Update content access. Copy its API token.

    Open your target database in Notion. In its ••• → Connections menu, add that connection. Copy the database URL.

    Use the original database, rather than a linked view. Its existing title column is detected automatically.

  4. Save your settings

    Open Sublime’s Command Palette with ⌘⇧P on macOS or Ctrl+Shift+P on Windows/Linux. Run Preferences: NotionSave Settings, paste the example below into the user settings on the right, and replace both placeholders.

    NotionSave.sublime-settings
    {
        "api_key": "YOUR_NOTION_API_TOKEN",
        "database_id": "YOUR_NOTION_DATABASE_URL_OR_ID"
    }

    Save the settings file. Open a note, right-click, and select Save to Notion. Upload progress appears in Sublime’s status bar.

    Enter your token only in Sublime’s user settings. This website never asks for or receives it.

Configuration reference

#

Run Preferences: NotionSave Settings to edit your user settings. Defaults appear on the left and your editable settings on the right. Changes are picked up automatically.

SettingWhat to enter
api_keyYour Notion connection token. Alternatively, set the NOTION_API_KEY environment variable before launching Sublime.
database_idThe full database URL or its ID. The database must be shared with your connection.
data_source_idOptional. Select a specific data source when a database has more than one. Takes precedence over database_id.
curl_pathOptional. Defaults to curl. Use the full executable path if Sublime cannot find it, such as /usr/bin/curl.
show_context_menuDefaults to true. Set false to hide the editor and tab menu entries; the File menu and Command Palette commands stay available.

Settings live in Packages/User/NotionSave.sublime-settings. Keep your API token out of the repository and your Vercel deployment.

If an upload needs attention

#

Your text is saved locally before the tab closes. Connection failures and rate limits retry automatically while Sublime is running. These Command Palette actions help with everything else.

Notion: Retry Uploads
Retry pending uploads and failures after fixing your token, database permissions, or settings. An uncertain upload is left for review.
Notion: Recover Pending Upload
See pending uploads and their errors. Select one to open a copy of the original text in a new tab. The original queue entry stays in place.
Notion: Open Queue Folder
Open the local snapshots in Packages/User/Notion Save Queue. Successful uploads are removed automatically.

If a write times out or Sublime quits during a request, check Notion before sending the recovered copy again. The first request may already have succeeded.

A few useful details

#
Can I install it through Package Control?

Version 1.0.0 is submitted for review. Until it is accepted into the default channel, use the manual installation steps above.

Does it keep uploading after I quit Sublime?

The worker runs inside Sublime, so keep the app open until the status bar confirms the save. Pending uploads resume on the next launch. An interrupted write is held for review so it isn’t blindly sent twice.

What gets saved, and how is the page named?

The entire buffer is saved as plain text, including unsaved changes. A saved file uses its filename as the page title; an untitled note uses its first nonempty line. Long notes are split into Notion paragraph blocks. Markdown is kept as text. The limit is 5 MB per buffer.

Does it change or delete my local file?

No. The command closes the selected tab and sends its current contents to Notion. It does not overwrite or delete the original file on disk. Unsaved changes are included in the queued snapshot.

Where does my data go?

Note text goes directly from your computer to Notion’s API. Pending snapshots and your settings stay on your computer as plain text; the API token is not stored in queue entries. This documentation page has no analytics, credentials form, or upload service.

How can I deploy this page on Vercel?

Import the GitHub repository into Vercel, leave the Root Directory at the repository root, and choose the Other framework preset. The included vercel.json publishes only the site directory. No build command or environment variables are needed.