diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index 89c7b14c47305a2261d987df954ae38b5aab3284..ee36b08b82cf5c0c97ce6043cc560e418d5eadc5 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -5,6 +5,11 @@
     %meta{:name => 'viewport', :content => 'width=device-width, initial-scale=1'}/
     %meta{'http-equiv' => 'X-UA-Compatible', :content => 'IE=edge'}/
 
+    %link{:rel => "apple-touch-icon", :sizes => "180x180" :href => "/assets/apple-touch-icon.png"}/
+    %link{:rel => "manifest", href => "/assets/manifest.json"}/
+    %meta{:name => "msapplication-config", content => "/assets/browserconfig.xml"}/
+    %meta{:name => "theme-color", content => "#ffffff"}/
+
     %title
       = "#{yield(:page_title)} - " if content_for?(:page_title)
       Mastodon
diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png
new file mode 100644
index 0000000000000000000000000000000000000000..f059bbc46fb45a4b250ba66a549ed434d7ab7a7f
Binary files /dev/null and b/public/android-chrome-192x192.png differ
diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png
new file mode 100644
index 0000000000000000000000000000000000000000..c1a1913024a5bb77a9c890e517872010b2b36947
Binary files /dev/null and b/public/apple-touch-icon.png differ
diff --git a/public/browserconfig.xml b/public/browserconfig.xml
new file mode 100644
index 0000000000000000000000000000000000000000..77318233c561b479b013d5deda471c1555b87e3f
--- /dev/null
+++ b/public/browserconfig.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<browserconfig>
+  <msapplication>
+    <tile>
+      <square150x150logo src="/assets/mstile-150x150.png"/>
+      <TileColor>#2b5797</TileColor>
+    </tile>
+  </msapplication>
+</browserconfig>
diff --git a/public/manifest.json b/public/manifest.json
new file mode 100644
index 0000000000000000000000000000000000000000..173270f036649a8a7af4f6f7188b5362f350df2b
--- /dev/null
+++ b/public/manifest.json
@@ -0,0 +1,14 @@
+{
+	"name": "Mastodon",
+	"description": "Mastodon is a free, open-source social network server.",
+	"icons": [
+		{
+			"src": "\/assets\/android-chrome-192x192.png",
+			"sizes": "192x192",
+			"type": "image\/png"
+		}
+	],
+	"theme_color": "#ffffff",
+	"display": "standalone",
+	"start_url": "/#/statuses/home"
+}
diff --git a/public/mstile-150x150.png b/public/mstile-150x150.png
new file mode 100644
index 0000000000000000000000000000000000000000..57eae8355d0f091ad23bdac05cfe95584dec5430
Binary files /dev/null and b/public/mstile-150x150.png differ