diff --git a/src/components/registration/registration.js b/src/components/registration/registration.js
index e5ead8bc..c4e96b3c 100644
--- a/src/components/registration/registration.js
+++ b/src/components/registration/registration.js
@@ -11,7 +11,8 @@ const registration = {
       username: '',
       password: '',
       confirm: ''
-    }
+    },
+    captcha: {}
   }),
   validations: {
     user: {
@@ -29,6 +30,13 @@ const registration = {
     if ((!this.registrationOpen && !this.token) || this.signedIn) {
       this.$router.push('/main/all')
     }
+
+    fetch("/api/pleroma/captcha")
+      .then(resp => resp.json())
+      .then(resp => {
+        // TODO: check for errors
+        this.captcha = resp
+      })
   },
   computed: {
     token () { return this.$route.params.token },
@@ -45,6 +53,8 @@ const registration = {
     async submit () {
       this.user.nickname = this.user.username
       this.user.token = this.token
+      this.user.captcha_solution = this.captcha.solution;
+      this.user.captcha_token = this.captcha.token;
 
       this.$v.$touch()
 
diff --git a/src/components/registration/registration.vue b/src/components/registration/registration.vue
index 8cb1392b..d4fb1ad0 100644
--- a/src/components/registration/registration.vue
+++ b/src/components/registration/registration.vue
@@ -75,6 +75,18 @@
               </ul>
             </div>
 
+            <div class="form-group" id="captcha-group">
+              <template v-if="captcha.type == 'kocaptcha'">
+                <img v-bind:src="captcha.url">
+
+                <label class='form--label' for='captcha-label'>CAPTCHA</label>
+
+                <input :disabled="isPending"
+                  v-model='captcha.solution'
+                  class='form-control' id='captcha-answer' type='text'>
+              </template>
+            </div>
+
             <div class='form-group' v-if='token' >
               <label for='token'>{{$t('registration.token')}}</label>
               <input disabled='true' v-model='token' class='form-control' id='token' type='text'>