diff --git a/doc/administration/gitaly/praefect.md b/doc/administration/gitaly/praefect.md
index 112c441164dc6b2a81baa7fd2d2b1da1399ca1b3..53ec384ad0c61a8735f6ceda4ac8a79cf96e2c8b 100644
--- a/doc/administration/gitaly/praefect.md
+++ b/doc/administration/gitaly/praefect.md
@@ -376,7 +376,7 @@ You should use PgBouncer with `session` pool mode. You can use the
 
 The following example uses the bundled PgBouncer and sets up two separate connection pools on PostgreSQL host,
 one in `session` pool mode and the other in `transaction` pool mode. For this example to work,
-you need to prepare PostgreSQL server as documented in [in the setup instructions](#manual-database-setup):
+you need to prepare PostgreSQL server as documented in [the setup instructions](#manual-database-setup):
 
 ```ruby
 pgbouncer['databases'] = {
diff --git a/doc/administration/postgresql/replication_and_failover.md b/doc/administration/postgresql/replication_and_failover.md
index e93dfc8336eef2d8ee9da9a922cae3498bae5363..573110d7f572493ad72fa9203428ea6a83e4bcd9 100644
--- a/doc/administration/postgresql/replication_and_failover.md
+++ b/doc/administration/postgresql/replication_and_failover.md
@@ -428,8 +428,8 @@ authentication mode (`patroni['tls_client_mode']`), must each have the same valu
 
    # START user configuration
    # Set the real values as explained in Required Information section
-   # Replace CONSUL_PASSWORD_HASH with with a generated md5 value
-   # Replace PGBOUNCER_PASSWORD_HASH with with a generated md5 value
+   # Replace CONSUL_PASSWORD_HASH with a generated md5 value
+   # Replace PGBOUNCER_PASSWORD_HASH with a generated md5 value
    pgbouncer['users'] = {
      'gitlab-consul': {
        password: 'CONSUL_PASSWORD_HASH'
diff --git a/doc/api/packages.md b/doc/api/packages.md
index 0d69078d1a1aea1c195559beb679c7eed511309c..3d2e8e5bfbf1090c35d0a9bc7ddb647302ec3f45 100644
--- a/doc/api/packages.md
+++ b/doc/api/packages.md
@@ -32,7 +32,7 @@ GET /projects/:id/packages
 | `package_name`        | string         | no       | Filter the project packages with a fuzzy search by name. |
 | `package_version`     | string         | no       | Filter the project packages by version. If used in combination with `include_versionless`, then no versionless packages are returned. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/349065) in GitLab 16.6. |
 | `include_versionless` | boolean        | no       | When set to true, versionless packages are included in the response. |
-| `status`              | string         | no       | Filter the returned packages by status. One of `default` (default), `hidden`, `processing`, `error`, or `pending_destruction`. |
+| `status`              | string         | no       | Filter the returned packages by status. One of `default`, `hidden`, `processing`, `error`, or `pending_destruction`. |
 
 ```shell
 curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/:id/packages"
@@ -98,7 +98,7 @@ GET /groups/:id/packages
 | `package_name`        | string         | no       | Filter the project packages with a fuzzy search by name. |
 | `package_version`     | string         | no       | Filter the returned packages by version. If used in combination with `include_versionless`, then no versionless packages are returned. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/349065) in GitLab 16.6. |
 | `include_versionless` | boolean        | no       | When set to true, versionless packages are included in the response. |
-| `status`              | string         | no       | Filter the returned packages by status. One of `default` (default), `hidden`, `processing`, `error`, or `pending_destruction`. |
+| `status`              | string         | no       | Filter the returned packages by status. One of `default`, `hidden`, `processing`, `error`, or `pending_destruction`. |
 
 ```shell
 curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/:id/packages?exclude_subgroups=false"
diff --git a/doc/ci/runners/runners_scope.md b/doc/ci/runners/runners_scope.md
index d6a556ffd9bdede5186dc0da0a3f2edd6560037a..230c5510111f16340013380e3d5a5f9435c17377 100644
--- a/doc/ci/runners/runners_scope.md
+++ b/doc/ci/runners/runners_scope.md
@@ -641,7 +641,7 @@ To determine the IP address of a shared runner:
 
 ### Determine the IP address of a project runner
 
-To can find the IP address of a runner for a project project,
+To can find the IP address of a runner for a project,
 you must have the Owner role for the
 project.
 
diff --git a/doc/ci/secrets/index.md b/doc/ci/secrets/index.md
index 96b9709bdefe7ae3b6b7b915f5248a094545a295..96a35703f1f4d61097e6d41c2c262c8a3718a073 100644
--- a/doc/ci/secrets/index.md
+++ b/doc/ci/secrets/index.md
@@ -33,7 +33,7 @@ The [Authenticating and Reading Secrets With HashiCorp Vault](../examples/authen
 tutorial has more details about authenticating with ID tokens.
 
 You must [configure your Vault server](#configure-your-vault-server) before you
-can use [use Vault secrets in a CI job](#use-vault-secrets-in-a-ci-job).
+can [use Vault secrets in a CI job](#use-vault-secrets-in-a-ci-job).
 
 The flow for using GitLab with HashiCorp Vault
 is summarized by this diagram:
diff --git a/doc/user/group/settings/group_access_tokens.md b/doc/user/group/settings/group_access_tokens.md
index 5b3f962061ea2512d26cbbfd3c467816d8d4e197..a8633c0cbbee664df84746948997f8d0e029e945 100644
--- a/doc/user/group/settings/group_access_tokens.md
+++ b/doc/user/group/settings/group_access_tokens.md
@@ -82,7 +82,7 @@ or API. However, administrators can use a workaround:
    # Set the GitLab administration user to use. If user ID 1 is not available or is not an administrator, use 'admin = User.admins.first' instead to select an administrator.
    admin = User.find(1)
 
-   # Set the group group you want to create a token for. For example, group with ID 109.
+   # Set the group you want to create a token for. For example, group with ID 109.
    group = Group.find(109)
 
    # Create the group bot user. For further group access tokens, the username should be `group_{group_id}_bot_{random_string}` and email address `group_{group_id}_bot_{random_string}@noreply.{Gitlab.config.gitlab.host}`.
diff --git a/doc/user/packages/generic_packages/index.md b/doc/user/packages/generic_packages/index.md
index 188b634af0a60a40cf6b3a382e5f16412d8c29ba..6348a8b9da7b8abefd41de5d7cf8992aa4e870b4 100644
--- a/doc/user/packages/generic_packages/index.md
+++ b/doc/user/packages/generic_packages/index.md
@@ -50,7 +50,7 @@ PUT /projects/:id/packages/generic/:package_name/:package_version/:file_name?sta
 | `package_name`     | string          | yes      | The package name. It can contain only lowercase letters (`a-z`), uppercase letter (`A-Z`), numbers (`0-9`), dots (`.`), hyphens (`-`), or underscores (`_`).
 | `package_version`  | string          | yes      | The package version. The following regex validates this: `\A(\.?[\w\+-]+\.?)+\z`. You can test your version strings on [Rubular](https://rubular.com/r/aNCV0wG5K14uq8).
 | `file_name`        | string          | yes      | The filename. It can contain only lowercase letters (`a-z`), uppercase letter (`A-Z`), numbers (`0-9`), dots (`.`), hyphens (`-`), or underscores (`_`).
-| `status`           | string          | no       | The package status. It can be `default` (default) or `hidden`. Hidden packages do not appear in the UI or [package API list endpoints](../../../api/packages.md).
+| `status`           | string          | no       | The package status. It can be `default` or `hidden`. Hidden packages do not appear in the UI or [package API list endpoints](../../../api/packages.md).
 | `select`           | string          | no       | The response payload. By default, the response is empty. Valid values are: `package_file`. `package_file` returns details of the package file record created by this request.
 
 Provide the file context in the request body.