diff --git a/src/components/public_timeline/public_timeline.js b/src/components/public_timeline/public_timeline.js
index 9b866be8..e54e49fa 100644
--- a/src/components/public_timeline/public_timeline.js
+++ b/src/components/public_timeline/public_timeline.js
@@ -4,7 +4,8 @@ const PublicTimeline = {
     Timeline
   },
   computed: {
-    timeline () { return this.$store.state.statuses.timelines.public }
+    timeline () { return this.$store.state.statuses.timelines.public },
+    currentUser () { return this.$store.state.users.currentUser }
   },
   created () {
     this.$store.dispatch('startFetching', 'public')
diff --git a/src/components/public_timeline/public_timeline.vue b/src/components/public_timeline/public_timeline.vue
index 85d42cca..6fbebd9e 100644
--- a/src/components/public_timeline/public_timeline.vue
+++ b/src/components/public_timeline/public_timeline.vue
@@ -1,5 +1,28 @@
 <template>
-  <Timeline :title="$t('nav.public_tl')" v-bind:timeline="timeline" v-bind:timeline-name="'public'"/>
+  <div>
+    <div v-if="!currentUser" class="login-hint panel panel-default">
+      <div class="panel-body">
+        <router-link :to="{ name: 'login' }">
+          {{ $t("login.hint") }}
+        </router-link>
+      </div>
+    </div>
+    <Timeline :title="$t('nav.public_tl')" v-bind:timeline="timeline" v-bind:timeline-name="'public'"/>
+  </div>
 </template>
 
 <script src="./public_timeline.js"></script>
+
+<style lang="scss">
+@import '../../_variables.scss';
+
+.login-hint {
+  text-align: center;
+
+  a {
+    display: inline-block;
+    padding: 1em 0px;
+    width: 100%;
+  }
+}
+</style>
diff --git a/src/i18n/en.json b/src/i18n/en.json
index f80d8ba2..51c3026b 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -28,7 +28,8 @@
     "password": "Password",
     "placeholder": "e.g. lain",
     "register": "Register",
-    "username": "Username"
+    "username": "Username",
+    "hint": "Log in to join discussion"
   },
   "nav": {
     "about": "About",