diff --git a/lang/en.json b/lang/en.json
index c0a5b4f5a93753052a11ee6b5c07fc0d734551e9..9acbbd471233bbcf1344b638de41ba93a5a9a7e1 100755
--- a/lang/en.json
+++ b/lang/en.json
@@ -629,6 +629,8 @@
         "azure_samlConnection": "Azure SAML",
         "transmit": "Transmit",
 		"validateSign": "Validate and sign",
-        "validateDocumentWarningNote": "You are about to submit this document!"
+        "validateDocumentWarningNote": "You are about to submit this document!",
+        "showPassword": "Show password",
+		"hidePassword": "Hide password"
     }
 }
\ No newline at end of file
diff --git a/lang/fr.json b/lang/fr.json
index aff6d1cf304c45ad7ad233520b0e907a454919c8..e26a774ce1f8ec2ed1043f6180d7923c74d30ffa 100755
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -628,6 +628,8 @@
 		"azure_samlConnection": "Azure SAML",
 		"transmit": "Transmettre",
 		"validateSign": "Valider et signer",
-		"validateDocumentWarningNote": "Vous êtes sur le point de transmettre ce document !"
+		"validateDocumentWarningNote": "Vous êtes sur le point de transmettre ce document !",
+		"showPassword": "Afficher le mot de passe",
+		"hidePassword": "Masquer le mot de passe"
 	}
 }
diff --git a/src/frontend/app/login/login.component.html b/src/frontend/app/login/login.component.html
index d0a9c920a50241989b44cb0c6ccfcafd28bc5adc..b7c34dcf7f0597bf908e099363ff67843cf29000 100644
--- a/src/frontend/app/login/login.component.html
+++ b/src/frontend/app/login/login.component.html
@@ -15,8 +15,16 @@
                 </ion-item>
                 <ion-item>
                     <ion-label position="floating">{{'lang.password' | translate}}</ion-label>
-                    <ion-input name="password" matInput type="password" formControlName="password"
+                    <ion-input name="password" matInput [type]="hidePassword ? 'password' : 'text'" formControlName="password"
                         (keyup.enter)="onSubmit()"></ion-input>
+                    <ion-button style="margin-top: 25px;" shape="round" size="small" fill="clear"
+                        slot="end" color="primary"
+                        [title]="(hidePassword ? 'lang.showPassword' : 'lang.hidePassword') | translate"
+                        (click)="hidePassword = !hidePassword">
+                        <ion-icon slot="icon-only" color="primary"
+                            [name]="!hidePassword ? 'eye-outline' : 'eye-off-outline'">
+                        </ion-icon>
+                    </ion-button>
                 </ion-item>
                 <div class="connection-type">
                     <a routerLink="/forgot-password" *ngIf="authService.authMode === 'default' && authService.mailServerOnline"
diff --git a/src/frontend/app/login/login.component.ts b/src/frontend/app/login/login.component.ts
index d664a86f97a329b21d5331106974a2428ded12ef..8c365c32903ec1368c38c5323a0f028e1213bb28 100644
--- a/src/frontend/app/login/login.component.ts
+++ b/src/frontend/app/login/login.component.ts
@@ -25,6 +25,7 @@ export class LoginComponent implements OnInit, AfterViewInit {
     showForm: boolean = false;
     environment: any;
     commitHash: any = null;
+    hidePassword: boolean = true;
 
 
     constructor(
@@ -98,6 +99,7 @@ export class LoginComponent implements OnInit, AfterViewInit {
                             this.router.navigate(['/home']);
                         }
                         loading.dismiss();
+                        this.hidePassword = true;
                     }),
                     catchError((err: any) => {
                         this.loading = false;