diff --git a/client/src/utils/auth.ts b/client/src/utils/auth.ts
new file mode 100644
index 0000000..470486f
--- /dev/null
+++ b/client/src/utils/auth.ts
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2022 Savoir-faire Linux Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation; either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this program.  If not, see
+ * <https://www.gnu.org/licenses/>.
+ */
+import { passwordStrength } from 'check-password-strength';
+import { LookupResolveValue } from 'jami-web-common';
+
+import { PasswordStrength } from '../enums/password-strength';
+import { StatusCode } from '../enums/status-code';
+
+interface PasswordStrengthResult {
+  id: number;
+  value: string;
+  contains: string[];
+  length: number;
+}
+
+export interface PasswordCheckResult {
+  strong: boolean;
+  value: string;
+}
+
+// TODO: Find a way to do it differently or remove this check from account creation.
+// It doesn't work if the server has secured this path, so I tweaked the server for test.
+// The tweak is to remove secured of apiRouter middleware in the server (app.ts).
+export async function isNameRegistered(name: string): Promise<boolean> {
+  try {
+    const response: Response = await fetch(`api/ns/name/${name}`);
+    if (response.status === StatusCode.Ok) {
+      const data: LookupResolveValue = await response.json();
+      return data.name === name;
+    }
+    return false;
+  } catch (err) {
+    return true;
+  }
+}
+
+export function checkPasswordStrength(password: string): PasswordCheckResult {
+  const strengthResult: PasswordStrengthResult = passwordStrength(password);
+
+  const checkResult: PasswordCheckResult = {
+    strong: strengthResult.id === PasswordStrength.Strong.valueOf(),
+    value: strengthResult.value,
+  };
+
+  return checkResult;
+}
