---
title: "Resource class overview"
description: "Learn how to use resource classes in CircleCI to specify compute resources for jobs, configure self-hosted runners, and choose execution environments."
platform: "Cloud, Server"
doc_version: "unversioned"
last_updated: "2026-10-15"
cloud_plans: "Free, Performance, Scale"
version_control: "All supported providers"
---

> For current CircleCI product defaults, deprecated patterns, and Cloud/Server differences, see [AGENTS.md](https://circleci.com/docs/AGENTS.md).
>
> For the complete documentation index and site structure, see [llms.txt](https://circleci.com/docs/llms.txt).

# Resource class overview

**Cloud plans:** Free, Performance, Scale

**Version control:** [All supported providers](https://circleci.com/docs/guides/integration/version-control-system-integration-overview/)

Use the `resource_class` key in your `.circleci/config.yml` to control the compute resources available to each job. Specifying the right resource class speeds up builds and reduces credit usage. Over-provisioned jobs cost more than necessary, and under-provisioned jobs run slowly or fail.

Use resource classes to:

*   Specify compute resource size (CPU and RAM) for running a job.
    
*   Configure [Self-Hosted Runners](https://circleci.com/docs/runner/runner-concepts/#namespaces-and-resource-classes) for use in your `.circleci/config.yml` file.
    
*   Specify an execution environment.
    

The most common usage is to specify CPU and RAM requirements for a job by configuring the `resource_class` key for an executor.

Specify a resource class for a Docker job

```yaml
jobs:
  my-job:
    docker:
      - image: cimg/base:2022.09 # specify a Docker image
    resource_class: xlarge # sets CPU and RAM for this job
    steps:
      - run: echo "Hello World"
```

Executor resource classes are specified by size, for example, `small` or `medium`. Each size corresponds to specific CPU and RAM requirements.

**For a full list of available resource class options,** see the [Configuration Reference](https://circleci.com/docs/reference/configuration-reference/#resourceclass). The [resource class product page](https://circleci.com/product/features/resource-classes) provides information on credit usage per resource class, and resource class availability for each plan type.

When using CircleCI’s self-hosted runners, use the `resource_class` key in your project configuration to specify which runner to use for a job. Self-hosted runner resource classes are assigned and configured during the [Runner Installation Process](https://circleci.com/docs/runner/runner-overview/#getting-started).

Self-hosted runner resource class

```yaml
jobs:
  my-job:
    machine: true
    resource_class: <my-namespace>/<my-runner> # namespace/runner-name assigned during runner installation
    steps:
      - run: echo "Hello runner"
```

Another use of the `resource_class` key is to specify an execution environment. For example, [Arm](https://circleci.com/docs/guides/execute/using-arm/) is a resource class option when using the `machine` executor.

Arm execution environment via resource class

```yaml
jobs:
  my-job:
    machine:
      image: ubuntu-2404:current
    resource_class: arm.medium # arm.medium or arm.large selects the Arm execution environment
    steps:
      - run: uname -a
      - run: echo "Hello, Arm!"
```

## Quickstart

For config examples showing how to use the `resource_class` key to **specify CPU and RAM size** for an execution environment, see the following sections of the configuration reference page:

*   [Docker Resource Classes](https://circleci.com/docs/reference/configuration-reference/#docker-execution-environment)
    
*   [Linux VM Resource Classes](https://circleci.com/docs/reference/configuration-reference/#linuxvm-execution-environment)
    
*   [macOS Resource Classes](https://circleci.com/docs/reference/configuration-reference/#macos-execution-environment)
    
*   [Windows Resource Classes](https://circleci.com/docs/reference/configuration-reference/#windows-execution-environment)
    
*   GPU resource classes:
    
    *   [Linux](https://circleci.com/docs/reference/configuration-reference/#gpu-execution-environment-linux)
        
    *   [Windows](https://circleci.com/docs/reference/configuration-reference/#gpu-execution-environment-windows)
        
    
*   [Arm Resource Classes](https://circleci.com/docs/reference/configuration-reference/#arm-execution-environment-linux)
    

**To get started setting up a self-hosted runner**, see the [Getting Started](https://circleci.com/docs/runner/runner-overview/#getting-started) section of the Self-hosted runners overview.

## Default resource class

If a `resource_class` is not explicitly declared for a job, CircleCI will use a default resource class size. Defaults are subject to change. It is best practice to specify a resource class, rather than relying on a default.

## View and monitor resource class usage

Information about the resource classes used in your jobs can be found in the web app, or by using the API. See the sections below for details.

### Find the resource class used for a job

The job details page in the web app shows the resource class used for a job.

> **Image:** Screenshot showing how to view the resource class used for a job in the web app

Figure 1. Resource class identifier in web app

Alternatively, use the "Get job details" endpoint to return information about a job, including the resource class used. For usage steps see the [Get Job Details](https://circleci.com/docs/guides/toolkit/api-developers-guide/#get-job-details) how-to guide.

### View resource usage per job

To view the compute resource usage for the duration of a job in the CircleCI web app:

1.  In the [CircleCI web app](https://app.circleci.com), select your org from the org cards on your user homepage.
    
2.  Select **Pipelines** from the sidebar and locate your pipeline from the list. You can use the project, branch, date, and status search options to help.
    
3.  Select the job you want to access by selecting the job name.
    
4.  Select the **Resources** tab to view CPU and RAM usage for the duration of the job.
    

You can use these insights to decide whether to make changes to the job’s configured resource class.

> **Image:** Resources tab

Figure 2. Resources tab in web app for a job

## See also

*   For a full list of available resource class options, see the [Configuration Reference](https://circleci.com/docs/reference/configuration-reference/#resourceclass).
    
*   For information on credit usage per resource class, and to find out resource class availability per plan type, see the [resource class product page](https://circleci.com/product/features/resource-classes).