diff --git a/assets/js/EditProfile.jsx b/assets/js/EditProfile.jsx
index a6510952e1120c85d675826da84b50d5c7d8476c..1f328cb1d8db63749b57c47ab270a4335447699c 100644
--- a/assets/js/EditProfile.jsx
+++ b/assets/js/EditProfile.jsx
@@ -78,6 +78,7 @@ export default class EditProfile extends ProfileHandler {
       interests: '',
       dependants: '',
       related_course: '',
+      ielts: 1.0,
     };
     this.getProfile = this.getProfile.bind(this);
     this.handleChange = this.handleChange.bind(this);
@@ -120,6 +121,7 @@ export default class EditProfile extends ProfileHandler {
           seminar: data.seminar,
           interests: data.interests,
           related_course: data.related_course,
+          ielts: data.ielts,
         });
         if (this.props.route.own) {
           const newSession = this.props.user.data;
@@ -611,6 +613,23 @@ export default class EditProfile extends ProfileHandler {
                   type="File"
                 />
               </Form.Field>
+              <Form.Field>
+                <label htmlFor="ielts">IELTS</label>
+                <input
+                  onChange={this.handleChange}
+                  placeholder={
+                    this.state.ielts === null
+                      ? '400'
+                      : this.state.ielts
+                  }
+                  defaultValue={
+                    this.state.ielts === null
+                      ? null
+                      : this.state.ielts
+                  }
+                  name="ielts"
+                />
+              </Form.Field>
             </Form>
           </Segment>
 
diff --git a/assets/js/ProfilePage.jsx b/assets/js/ProfilePage.jsx
index 005d984591625143f290d73001774d00618ccb51..1799377a2dd55d92eada9934a680c0da2279eb1f 100755
--- a/assets/js/ProfilePage.jsx
+++ b/assets/js/ProfilePage.jsx
@@ -102,6 +102,7 @@ export default class ProfilePage extends ProfileHandler {
       interests: '',
       dependants: '',
       related_course: '',
+      ielts: 1.0,
     };
     this.getProfile = this.getProfile.bind(this);
     this.handleChange = this.handleChange.bind(this);
@@ -172,6 +173,7 @@ export default class ProfilePage extends ProfileHandler {
           interests: data.interests,
           dependants: data.dependants,
           related_course: data.related_course,
+          ielts: data.ielts,
         });
         if (this.props.route.own) {
           const newSession = this.props.user.data;
@@ -825,6 +827,20 @@ export default class ProfilePage extends ProfileHandler {
                   </Grid.Column>
                 </Grid>
               </Segment>
+              <Segment basic vertical>
+                <Grid>
+                  <Grid.Column width={2}>
+                    <Icon name="pencil alternate" size="big" />
+                  </Grid.Column>
+                  <Grid.Column width={13}>
+                    <p href={this.state.ielts}>
+                      {' '}
+                      {this.state.ielts || 'N/A'}
+                      {' '}
+                    </p>
+                  </Grid.Column>
+                </Grid>
+              </Segment>
             </Grid.Column>
           </Grid>
         </Segment>
diff --git a/core/migrations/0002_student_ielts.py b/core/migrations/0002_student_ielts.py
new file mode 100644
index 0000000000000000000000000000000000000000..d2c27feb8f4c4e569cd9eb8d4dc20e86f70d718f
--- /dev/null
+++ b/core/migrations/0002_student_ielts.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.8 on 2019-12-05 15:09
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('core', '0001_initial'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='student',
+            name='ielts',
+            field=models.FloatField(blank=True, db_column='ielts', default=1.0, null=True),
+        ),
+    ]
diff --git a/core/models/accounts.py b/core/models/accounts.py
index e43284125fd65e3144e64ef36b95be90c2cad79e..c9dddd8d4f5520433d90ab7148606a11bf50ec46 100755
--- a/core/models/accounts.py
+++ b/core/models/accounts.py
@@ -128,7 +128,8 @@ class Student(models.Model):
     interests = models.CharField(max_length=100, blank=True, null=True)
     dependants = models.IntegerField(db_column='dependants', default=0, blank=True, null=True)
     related_course = models.CharField(max_length=200, blank=True, null=True)
-
+    ielts = models.FloatField(db_column='ielts', default=1.0, blank=True, null=True)
+    
     @property
     def name(self):
         return get_display_name(self.user)
diff --git a/core/serializers/accounts.py b/core/serializers/accounts.py
index afd6e58e92640f71da6a46cba571b050a1a2eca4..c6c4bdcb1d19a53672a8ab6f71b041730e1cf26c 100755
--- a/core/serializers/accounts.py
+++ b/core/serializers/accounts.py
@@ -26,7 +26,7 @@ class StudentSerializer(serializers.ModelSerializer):
                   'work_experience', 'latest_work', 'latest_work_desc', 'read_no', 'volunteer', 'job_seeking_status',
                   'skills', 'expected_salary',
                   'self_description', 'github_url', 'gitlab_url', 'awards', 'certification', 'languages', 'seminar',
-                  'interests', 'alamat', 'projects', 'dependants', 'student_toefl', 'student_toefl_file', 'related_course']
+                  'interests', 'alamat', 'projects', 'dependants', 'student_toefl', 'student_toefl_file', 'related_course', 'ielts']
 
     @staticmethod
     def get_accepted_no(obj):
@@ -89,6 +89,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer):
             'interests': instance.interests,
             'dependants': instance.dependants,
             'related_course':instance.related_course,
+            'ielts':instance.ielts,
         }
 
     def update(self, instance, validated_data):
@@ -154,6 +155,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer):
         instance.dependants = validated_data.get('dependants', instance.dependants)
         instance.related_course = validated_data.get(
             'related_course', instance.related_course)
+        instance.ielts = validated_data.get('ielts', instance.ielts)
         instance.save()
         instance.user.save()
         return instance
@@ -165,7 +167,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer):
                   'work_experience', 'latest_work', 'latest_work_desc', 'volunteer', 'job_seeking_status', 'skills',
                   'expected_salary',
                   'self_description', 'github_url', 'gitlab_url', 'awards', 'certification', 'languages', 'seminar',
-                  'interests', 'alamat', 'projects', 'dependants', 'student_toefl', 'student_toefl_file', 'related_course']
+                  'interests', 'alamat', 'projects', 'dependants', 'student_toefl', 'student_toefl_file', 'related_course', 'ielts']
 
 
 class CompanyUpdateSerializer(serializers.ModelSerializer):
diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py
index 5014f4b4c5ad97320ed8c0e614b056a2e14b2128..fa65ad1b01c7719dc3249b8bb4ca9923900e1721 100755
--- a/core/tests/test_accounts.py
+++ b/core/tests/test_accounts.py
@@ -451,6 +451,16 @@ class ProfileUpdateTests(APITestCase):
         response = self.client.patch(url, {'dependants': 'this is not valid dependants input'}, format='multipart')
         self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
 
+        url = '/api/students/' + str(student_id) + "/profile/"
+        response = self.client.patch(url, {'ielts': 6.0}, format='multipart')
+        self.assertEqual(response.status_code, status.HTTP_202_ACCEPTED)
+        self.assertEqual(response.data.get('ielts'), 6.0)
+
+        url = '/api/students/' + str(student_id) + "/profile/"
+        response = self.client.patch(url, {'ielts': 'invalid input'}, format='multipart')
+        self.assertEqual(response.status_code, status.HTTP_400_BAD_REQUEST)
+
+
     def _create_test_file(self, path):
         f = open(path, 'rb')
         return {'pdf_file': f}