#
Obsidian URI
Obsidian URI is a custom URI protocol supported by Obsidian that lets you trigger various actions, such as opening a note or creating a note. Obsidian URI enables automation and cross-app workflows.
#
URI format
Obsidian URIs use the following format:
obsidian://action?param1=value¶m2=value
The action parameter is the action that you would like to perform. Available actions include:
opento open a note.newto create or add to an existing note.dailyto create or open your daily note.searchto open a search.
Encoding
Ensure that your values are properly URI encoded. For example, forward slash characters / must be encoded as %2F and space characters must be encoded as %20.
This is especially important because an improperly encoded "reserved" character may break the interpretation of the URI. See here for details.
#
Open note
The open action opens an Obsidian vault, or opens a file within that vault.
#
Examples
obsidian://open?vault=my%20vaultThis opens the vaultmy vault. If the vault is already open, focus on the window.obsidian://open?vault=ef6ca3e3b524d22fThis opens the vault identified by the IDef6ca3e3b524d22f.obsidian://open?vault=my%20vault&file=my%20noteThis opens the notemy note.mdin the vaultmy vault, assuming the file exists.obsidian://open?path=%2Fhome%2Fuser%2Fmy%20vault%2Fpath%2Fto%2Fmy%20noteThis will look for any vault that contains the path/home/user/my vault/path/to/my note. Then, the rest of the path is passed to thefileparameter. For example, if a vault exists at/home/user/my vault, then this would be equivalent tofileparameter set topath/to/my note.
Open a heading or block
With proper URI encoding, you can navigate to a heading or block within a note. Note%23Heading would navigate to the heading called "Heading", whereas Note%23%5EBlock would navigate to the block called "Block".
#
Parameters
vaultcan be either the vault name or the vault ID1.filecan be either a file name, or a path from the vault root to the specified file. If the file extension ismd, the extension can be omitted.pathan absolute file system path to a file.- Using this parameter will override both
vaultandfile. - This will cause the app to search for the most specific vault which contains the specified file path.
- Then the rest of the path replaces the
fileparameter.
- Using this parameter will override both
prependwill add to the top of the file and attempt to merge properties.appendwill add to the end of the file and also attempt to merge properties.
#
Create note
The new action, creates a new note in the vault, optionally with some content.
#
Examples
obsidian://new?vault=my%20vault&name=my%20noteThis opens the vaultmy vault, and creates a new note calledmy note.obsidian://new?vault=my%20vault&path=path%2Fto%2Fmy%20noteThis opens the vaultmy vault, and creates a new note atpath/to/my note.
#
Parameters
vaultcan be either the vault name, or the vault ID1. Same as actionopen.namethe file name to be created. If this is specified, the file location will be chosen based on your "Default location for new notes" preferences.filea vault absolute path, including the name. Will overridenameif specified.patha globally absolute path. Works similar to thepathoption in theopenaction, which will override bothvaultandfile.content(optional) the contents of the note.clipboard(optional) use of the contents of the clipboard instead of specifyingcontent.silent(optional) include this parameter if you don't want to open the new note.append(optional) include this parameter to append to an existing file if one exists.overwrite(optional) overwrite an existing file if one exists, but only ifappendisn't set.x-success(optional) seeUse x callback url parameters .
#
Create or open daily note
The daily action creates or opens your daily note. The Daily notes plugin must be enabled.
#
Examples
obsidian://daily?vault=my%20vaultThis opens the vaultmy vault, and creates or opens the daily note.
#
Parameters
The daily action accepts the same parameters as the new action.
#
Open search
The search action opens Search in the specified vault, and optionally perform a search term.
#
Examples
obsidian://search?vault=my%20vaultThis opens the vaultmy vault, and opens Search.obsidian://search?vault=my%20vault&query=ObsidianThis opens the vaultmy vault, opens Search, and performs a search forObsidian.
#
Parameters
vaultcan be either the vault name, or the vault ID1. Same as actionopen.query(optional) The search term to perform.
#
Integrate with Hook
This Obsidian URI action is to be used with Hook.
#
Example
obsidian://hook-get-address
#
Parameters
vault(optional) can be either the vault name, or the vault ID1. If not provided, the current or last focused vault will be used.x-success(optional) seeUse x callback url parameters .x-error(optional) seeUse x callback url parameters .
If x-success is defined, this API will use it as the x-callback-url. Otherwise, it will copy a Markdown link of the current focused note to the clipboard, as an obsidian://open URL.
#
Use x-callback-url parameters
Some endpoints will accept the x-callback-url parameters x-success and x-error. When it's provided, Obsidian will provide the following to the x-success callback:
namethe name of the file, without the file extension.urltheobsidian://URI for this file.file(desktop only) thefile://URL for this file.
For example, if Obsidian receives
obsidian://.....x-success=myapp://x-callback-url, the response would be myapp://x-callback-url?name=...&url=obsidian%3A%2F%2Fopen...&file=file%3A%2F%2F...
#
Shorthand formats
In addition to the formats above, there are two more "shorthand" formats available to open vaults and files:
obsidian://vault/my vault/my noteis equivalent toobsidian://open?vault=my%20vault&file=my%20note.obsidian:///absolute/path/to/my noteis equivalent toobsidian://open?path=%2Fabsolute%2Fpath%2Fto%2Fmy%20note.
#
Troubleshooting
#
Register Obsidian URI
On Windows and macOS, running the app once should be sufficient to register the Obsidian URI protocol on your computer.
On Linux, it is a much more involved process:
- Ensure you create a
obsidian.desktopfile. See here for details. - Ensure that your desktop file specifies the
Execfield asExec=executable %u. The%uis used to pass theobsidian://URIs to the app. - If you're using the AppImage installer, you may have to unpack it using
Obsidian-x.y.z.AppImage --appimage-extract. Then make sure theExecdirective points to the unpacked executable.