emojify is an Emacs package that adds emoji support to any Emacs buffer.

emojify-mode works in all kinds of places

Running M-x emojify-mode will turn on emoji support for the current buffer. It does not alter the contents of the buffer, only how it's displayed. This makes it safer to use, but it does have some weird side-effects when aligning text in certain buffers (like org-agenda).

There is also no support for html export, although there's a GitHub issue open with some workarounds.

Any required images will be downloaded the first time running emojify-mode, and a full list of supported emojis can be viewed with emojify-list-emojis. There are over 5,000 so it can take a while to display.

global-emojify-mode can be used enable the mode everywhere:

;; Enable everywhere via an init hook.
(add-hook 'after-init-hook #'global-emojify-mode)

;; Or with use-package.
(use-package emojify
  :init
  (global-emojify-mode))

I prefer to enable emojify on a per-project basis, so I use .dir-locals.el to enable it for org and markdown buffers:

((org-mode      . ((mode . emojify)))
 (markdown-mode . ((mode . emojify))))

Yet another reason to ❤️ Emacs.