diff --git a/package.json b/package.json
index 7cd3b8a..1fd1757 100644
--- a/package.json
+++ b/package.json
@@ -19,7 +19,7 @@
   "scripts": {
     "build": "tsc",
     "dev": "ts-node-dev --quiet --respawn ./src/cli/bin.ts",
-    "docker:up": "docker-compose up -d",
+    "docker:up": "docker compose up -d",
     "fix": "run-s fix:*",
     "fix:eslint": "eslint --fix src",
     "fix:prettier": "prettier --write src",
diff --git a/src/cli/cli.test.ts b/src/cli/cli.test.ts
index d661367..3b6f058 100644
--- a/src/cli/cli.test.ts
+++ b/src/cli/cli.test.ts
@@ -9,6 +9,7 @@ export const testCli = () => {
 
   const DEFAULT_CLI_OPTIONS: CliOptions = {
     camelCase: false,
+    tableNameSuffix: undefined,
     dialectName: undefined,
     envFile: undefined,
     excludePattern: undefined,
diff --git a/src/cli/cli.ts b/src/cli/cli.ts
index 5055a5e..4467dfb 100644
--- a/src/cli/cli.ts
+++ b/src/cli/cli.ts
@@ -18,6 +18,7 @@ import { FLAGS } from './flags';
 
 export type CliOptions = {
   camelCase: boolean;
+  tableNameSuffix: string | undefined;
   dialectName: DialectName | undefined;
   envFile: string | undefined;
   excludePattern: string | undefined;
@@ -31,7 +32,7 @@ export type CliOptions = {
   verify: boolean | undefined;
 };
 
-export type LogLevelName = typeof LOG_LEVEL_NAMES[number];
+export type LogLevelName = (typeof LOG_LEVEL_NAMES)[number];
 
 /**
  * Creates a kysely-codegen command-line interface.
@@ -39,6 +40,7 @@ export type LogLevelName = typeof LOG_LEVEL_NAMES[number];
 export class Cli {
   async generate(options: CliOptions) {
     const camelCase = !!options.camelCase;
+    const tableNameSuffix = options.tableNameSuffix;
     const outFile = options.outFile;
     const excludePattern = options.excludePattern;
     const includePattern = options.includePattern;
@@ -76,6 +78,7 @@ export class Cli {
 
     await generator.generate({
       camelCase,
+      tableNameSuffix,
       db,
       dialect,
       excludePattern,
@@ -147,6 +150,7 @@ export class Cli {
 
     const _: string[] = argv._;
     const camelCase = this.#parseBoolean(argv['camel-case']);
+    const tableNameSuffix = argv['table-name-suffix'] as string | undefined;
     const dialectName = argv.dialect;
     const help =
       !!argv.h || !!argv.help || _.includes('-h') || _.includes('--help');
@@ -212,6 +216,7 @@ export class Cli {
 
     return {
       camelCase,
+      tableNameSuffix,
       dialectName,
       envFile,
       excludePattern,
diff --git a/src/cli/flags.ts b/src/cli/flags.ts
index 8d2b4d0..cba92bc 100644
--- a/src/cli/flags.ts
+++ b/src/cli/flags.ts
@@ -11,6 +11,12 @@ export const FLAGS: Flag[] = [
     description: 'Use the Kysely CamelCasePlugin.',
     longName: 'camel-case',
   },
+  {
+    description:
+      'Add a suffix to generated table interface names. ' +
+      '(examples: Schema, Table)',
+    longName: 'table-name-suffix',
+  },
   {
     description: `Set the SQL dialect. (values: [${VALID_DIALECTS.join(
       ', ',
diff --git a/src/generator/generator.ts b/src/generator/generator.ts
index 1dc2413..ef8a395 100644
--- a/src/generator/generator.ts
+++ b/src/generator/generator.ts
@@ -8,6 +8,7 @@ import { Transformer } from '../transformer';
 
 export type GenerateOptions = {
   camelCase?: boolean;
+  tableNameSuffix?: string;
   db: Kysely<any>;
   dialect: Dialect;
   excludePattern?: string;
@@ -49,6 +50,7 @@ export class Generator {
     const transformer = options.transformer ?? new Transformer();
     const nodes = transformer.transform({
       camelCase: !!options.camelCase,
+      tableNameSuffix: options.tableNameSuffix,
       defaultSchema: options.schema,
       dialect: options.dialect,
       metadata,
diff --git a/src/transformer/transformer.ts b/src/transformer/transformer.ts
index 7d0a7e7..ce7296b 100644
--- a/src/transformer/transformer.ts
+++ b/src/transformer/transformer.ts
@@ -43,6 +43,7 @@ const unionize = (args: ExpressionNode[]) => {
 
 export type TransformContext = {
   camelCase: boolean;
+  tableNameSuffix: string | undefined;
   defaultScalar: ExpressionNode;
   defaultSchema: string | null;
   definitions: Definitions;
@@ -55,6 +56,7 @@ export type TransformContext = {
 
 export type TransformOptions = {
   camelCase: boolean;
+  tableNameSuffix?: string | undefined;
   defaultSchema?: string;
   dialect: Dialect;
   metadata: DatabaseMetadata;
@@ -145,6 +147,7 @@ export class Transformer {
   #createContext(options: TransformOptions): TransformContext {
     return {
       camelCase: options.camelCase,
+      tableNameSuffix: options.tableNameSuffix,
       defaultScalar:
         options.dialect.adapter.defaultScalar ?? new IdentifierNode('unknown'),
       defaultSchema:
@@ -174,7 +177,8 @@ export class Transformer {
       const symbolName = context.symbols.getName(identifier);
 
       if (symbolName) {
-        const value = new IdentifierNode(symbolName);
+        const interfaceName = this.#getTableInterfaceName(symbolName, context);
+        const value = new IdentifierNode(interfaceName);
         const tableProperty = new PropertyNode(identifier, value);
         tableProperties.push(tableProperty);
       }
@@ -232,6 +236,10 @@ export class Transformer {
     return this.#transformName(name, context);
   }
 
+  #getTableInterfaceName(name: string, context: TransformContext) {
+    return `${name}${context.tableNameSuffix ?? ''}`;
+  }
+
   #transformColumn(column: ColumnMetadata, context: TransformContext) {
     let args = this.#transformColumnToArgs(column, context);
 
@@ -332,8 +340,9 @@ export class Transformer {
       const symbolName = context.symbols.set(identifier, {
         type: SymbolType.TABLE,
       });
+      const interfaceName = this.#getTableInterfaceName(symbolName, context);
       const tableNode = new ExportStatementNode(
-        new InterfaceDeclarationNode(symbolName, expression),
+        new InterfaceDeclarationNode(interfaceName, expression),
       );
       tableNodes.push(tableNode);
     }
