Org provides methods to create a link in the correct syntax, to insert it into an Org file, and to follow the link.
Org mode buffers
For Org files, if there is a ‘<<target>>’ at the cursor, the link points to the target. Otherwise it points to the current headline, which will also be the description1.
If the headline has a
CUSTOM_ID property, a link to this custom ID
will be stored. In addition or alternatively (depending on the value of
org-id-link-to-org-use-id), a globally unique
ID property will
be created and/or used to construct a link2. So using this command in Org buffers
will potentially create two links: a human-readable from the custom ID, and
one that is globally unique and works even if the entry is moved from file to
file. Later, when inserting the link, you need to decide which one to use.
Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus
Pretty much all Emacs mail clients are supported. The link will point to the current article, or, in some GNUS buffers, to the group. The description is constructed from the author and the subject.
Web browsers: Eww, W3 and W3M
Here the link will be the current URL, with the page title as description.
Links created in a BBDB buffer will point to the current entry.
For IRC links, if you set the option
a ‘file:/’ style link to the relevant point in the logs for the current
conversation is created. Otherwise an ‘irc:/’ style link to the
user/channel/server under the point will be stored.
For any other files, the link will point to the file, with a search string (see Search options) pointing to the contents of the current line. If there is an active region, the selected words will form the basis of the search string. If the automatically created link is not working correctly or accurately enough, you can write custom functions to select the search string and to do the search for particular file types—see Custom searches. The key binding C-c l is only a suggestion—see Installation.
When the cursor is in an agenda view, the created link points to the entry referenced by the current line.
Inserting stored links
All links stored during the current session are part of the history for this prompt, so you can access them with <UP> and <DOWN> (or M-p/n).
Completion with <TAB> will help you to insert valid link prefixes like ‘https:’, including the prefixes defined through link abbreviations (see Link abbreviations). If you press <RET> after inserting only the prefix, Org will offer specific completion support for some link types5 For example, if you type file <RET>, file name completion (alternative access: C-u C-c C-l, see below) will be offered, and after bbdb <RET> you can complete contact names.
org-file-apps. If you want to override the default application and visit the file with Emacs, use a C-u prefix. If you want to avoid opening in Emacs, use a C-u C-u prefix.
org-return-follows-linkis set, <RET> will also follow the link at point.
(add-hook 'org-load-hook (lambda () (define-key org-mode-map "\C-n" 'org-next-link) (define-key org-mode-map "\C-p" 'org-previous-link)))
 If the headline contains a timestamp, it will be removed from the link and result in a wrong link—you should avoid putting timestamp in the headline.
 The library
org-id.el must first be loaded, either through
org-modules, or by adding
'org-id) in your Emacs init file.
 Note that you don't have to use this command to insert a link. Links in Org are plain text, and you can type or paste them straight into the buffer. By using this command, the links are automatically enclosed in double brackets, and you will be asked for the optional descriptive text.
 After insertion of a stored link, the link will be
removed from the list of stored links. To keep it in the list later use, use
a triple C-u prefix argument to C-c C-l, or configure the option
 This works if
a completion function is defined in the ‘:complete’ property of a link
 See the
 with corresponding