diff --git a/src/web/app/ch/style.styl b/src/web/app/ch/style.styl
index 2fc3ac3fca..8ad6fbce0b 100644
--- a/src/web/app/ch/style.styl
+++ b/src/web/app/ch/style.styl
@@ -1,4 +1,5 @@
 @import "../base"
 
 html
+	padding 8px
 	background #efefef
diff --git a/src/web/app/ch/tags/channel.tag b/src/web/app/ch/tags/channel.tag
index 85560e7b79..35463bc0b8 100644
--- a/src/web/app/ch/tags/channel.tag
+++ b/src/web/app/ch/tags/channel.tag
@@ -1,5 +1,5 @@
 <mk-channel>
-	<header><a href={ CONFIG.chUrl }>Misskey Channels</a></header>
+	<mk-header/>
 	<hr>
 	<main if={ !fetching }>
 		<h1>{ channel.title }</h1>
@@ -36,7 +36,6 @@
 	<style>
 		:scope
 			display block
-			padding 8px
 
 			> main
 				> h1
diff --git a/src/web/app/ch/tags/header.tag b/src/web/app/ch/tags/header.tag
new file mode 100644
index 0000000000..5cdcbd09cc
--- /dev/null
+++ b/src/web/app/ch/tags/header.tag
@@ -0,0 +1,20 @@
+<mk-header>
+	<div>
+		<a href={ CONFIG.chUrl }>Index</a> | <a href={ CONFIG.url }>Misskey</a>
+	</div>
+	<div>
+		<a if={ !SIGNIN } href={ CONFIG.url }>ログイン(新規登録)</a>
+		<a if={ SIGNIN } href={ CONFIG.url + '/' + I.username }>{ I.username }</a>
+	</div>
+	<style>
+		:scope
+			display flex
+
+			> div:last-child
+				margin-left auto
+
+	</style>
+	<script>
+		this.mixin('i');
+	</script>
+</mk-header>
diff --git a/src/web/app/ch/tags/index.js b/src/web/app/ch/tags/index.js
index 1e99ccd43e..12ffdaeb84 100644
--- a/src/web/app/ch/tags/index.js
+++ b/src/web/app/ch/tags/index.js
@@ -1,2 +1,3 @@
 require('./index.tag');
 require('./channel.tag');
+require('./header.tag');
diff --git a/src/web/app/ch/tags/index.tag b/src/web/app/ch/tags/index.tag
index a64ddb6ccd..50ccc0d91c 100644
--- a/src/web/app/ch/tags/index.tag
+++ b/src/web/app/ch/tags/index.tag
@@ -1,4 +1,6 @@
 <mk-index>
+	<mk-header/>
+	<hr>
 	<button onclick={ n }>%i18n:ch.tags.mk-index.new%</button>
 	<hr>
 	<ul if={ channels }>