Skip to content


Repository files navigation


CircleCI Coverage Status Hex version

Metatags provides an easy and flexible way to set both default and page specific metatags that are used for SEO, Facebook, Twitter etc.

Documentation is available at


Add metatags to your list of dependencies in mix.exs:

def deps do
  [{:metatags, "~> 0.3.2"}]

Add the plug to your router and configure the defaults (You can use Application.get_env/3 if you'd like to extract it into the configuration file).

defmodule MyRouter do
  use Plug.Conn

  plug Metatags.Plug,
    sitename: "My_app",
    title_separator: "-",
    default_tags: %{
      "title" => "Welcome!",
      "description" => "My_app is a great app",
      "keywords" => ["My_app", "great", "elixir"]


In your controller put page specific data:

|> Metatags.put("title", "About My_app")
|> Metatags.put("description", "My app is just a regular app")
|> Metatags.put("og", %{"image" => "http://myimage.jpg"}) # You can have nested structures
|> Metatags.put("og:image", "http://myimage.jpg") # or define them inline
|> Metatags.put("canonical", "")
|> Metatags.put("alternate", "", hreflang: "en-GB")

And print them out inside your head tag

    <%= Metatags.print_tags(@conn) %>