diff --git a/src/tools/token-generator/token-generator.service.ts b/src/tools/token-generator/token-generator.service.ts
index c4a497b8..ad22628a 100644
--- a/src/tools/token-generator/token-generator.service.ts
+++ b/src/tools/token-generator/token-generator.service.ts
@@ -24,5 +24,6 @@ export function createToken({
+ (withSymbols ? '.,;:!?./-"\'#{([-|\\@)]=}*+' : '')
)).split('').filter(c => !(deniedChars?.includes(c))).join('');
- return shuffleString(allAlphabet.repeat(length)).substring(0, length);
+ const len = length < 1 ? 1 : length;
+ return shuffleString(allAlphabet.repeat(len)).substring(0, len);
}
diff --git a/src/tools/token-generator/token-generator.tool.vue b/src/tools/token-generator/token-generator.tool.vue
index 912d1f32..3000fea6 100644
--- a/src/tools/token-generator/token-generator.tool.vue
+++ b/src/tools/token-generator/token-generator.tool.vue
@@ -14,7 +14,7 @@ const deniedChars = useQueryParamOrStorage({ name: 'deny', storageName: 'token-g
const { t } = useI18n();
const [tokens, refreshTokens] = computedRefreshable(() =>
- Array.from({ length: count.value },
+ Array.from({ length: count.value < 1 ? 1 : count.value },
() => createToken({
length: length.value,
withUppercase: withUppercase.value,
@@ -59,11 +59,12 @@ const { copy } = useCopy({ source: tokens, text: t('tools.token-generator.copied
-
+
-
+
+