> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iotools.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Camera Depth of Field (DoF) Calculator

> Calculate a camera's depth of field from focal length, aperture, subject distance and sensor size. Get the hyperfocal distance, near and far focus limits, total depth of field, and which side of the subject has more DoF. Pure optics math — no camera or photo upload needed.

[Try Camera Depth of Field (DoF) Calculator in your browser →](https://iotools.cloud/tool/camera-depth-of-field-calculator/)



## OpenAPI

````yaml https://api.iotools.cloud/v1/openapi post /v1/tool/camera-depth-of-field-calculator
openapi: 3.1.0
info:
  title: iotools.cloud API
  version: 1.0.0
  description: >-
    Run any iotools.cloud tool over HTTP.


    Authenticate with `Authorization: Bearer iot_live_…`.


    **Only `POST /v1/tool/{slug}` costs credits.** Every GET here — the catalog,
    a tool's schema, your balance — is free. A tool call is charged its own
    weight or your plan's per-call minimum, whichever is larger;
    `x-iotools-credit-cost` on each operation is quoted at the free-tier
    minimum, and `GET /v1/tools/list` returns the exact figure for your key.
    `GET /v1/me/credits` reports what you have left, and `GET /v1/me/usage`
    reports what it went on.


    Failures are RFC 9457 problem documents — branch on `code`.
servers:
  - url: https://api.iotools.cloud
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Catalog
    description: Find a tool and read its contract. Free.
  - name: Converters
    description: >-
      Convert between formats, encodings, and units — Base64, CSV and JSON,
      timestamps, and more. Fast, free, and processed right in your browser.
  - name: Formatters
    description: >-
      Format, beautify, minify, and validate code and data — JSON, HTML, CSS,
      SQL, and regex. Clean up messy input in one click, with nothing to upload.
  - name: Generators
    description: >-
      Generate exactly what you need and on demand — passwords, UUIDs, QR codes,
      hashes, random numbers, and more. Secure, instant, and free.
  - name: Calculators
    description: >-
      Crunch the numbers fast — from everyday math to specialized conversions
      and unit work. Free online calculators that run entirely in your browser.
  - name: Editors
    description: >-
      Edit and transform text, code, and images with quick, focused editors that
      run entirely in your browser — nothing to install, and no sign-up needed.
  - name: Utilities
    description: >-
      Everyday developer and web utilities — DNS and IP lookups, redirect and
      certificate checkers, and other quick diagnostics. Free and
      privacy-friendly.
  - name: Account
    description: Your key's allowance, limits and usage history.
paths:
  /v1/tool/camera-depth-of-field-calculator:
    post:
      tags:
        - Calculators
      summary: Camera Depth of Field (DoF) Calculator
      description: >-
        Calculate a camera's depth of field from focal length, aperture, subject
        distance and sensor size. Get the hyperfocal distance, near and far
        focus limits, total depth of field, and which side of the subject has
        more DoF. Pure optics math — no camera or photo upload needed.


        [Try Camera Depth of Field (DoF) Calculator in your browser
        →](https://iotools.cloud/tool/camera-depth-of-field-calculator/)
      operationId: run_camera_depth_of_field_calculator
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                sensor:
                  enum:
                    - fullframe
                    - apsc-canon
                    - apsc-nikon
                    - mft
                    - 1inch
                    - phone
                    - medium-format
                    - custom
                  description: Sensor Size
                coC:
                  type: number
                  description: Circle of Confusion (mm)
                  minimum: 0.001
                  maximum: 1
                focalLength:
                  type: number
                  description: Focal Length (mm)
                  minimum: 1
                  maximum: 2000
                aperture:
                  type: number
                  description: Aperture (f-number)
                  minimum: 0.5
                distance:
                  type: number
                  description: Subject Distance
                  minimum: 0.01
                distanceUnit:
                  enum:
                    - m
                    - ft
                  description: Distance Unit
              required: []
            examples:
              50mm_f_5_6_full_frame_3m:
                summary: 50mm f/5.6, full frame, 3m
                value:
                  sensor: fullframe
                  coC: '0.03'
                  focalLength: '50'
                  aperture: '5.6'
                  distance: '3'
                  distanceUnit: m
              24mm_f_11_aps_c_canon_5_feet:
                summary: 24mm f/11, APS-C Canon, 5 feet
                value:
                  sensor: apsc-canon
                  coC: '0.03'
                  focalLength: '24'
                  aperture: '11'
                  distance: '5'
                  distanceUnit: ft
              24mm_f_11_aps_c_canon_10_feet_past_hyperfocal_far_is_infinite:
                summary: >-
                  24mm f/11, APS-C Canon, 10 feet (past hyperfocal — far is
                  infinite)
                value:
                  sensor: apsc-canon
                  coC: '0.03'
                  focalLength: '24'
                  aperture: '11'
                  distance: '10'
                  distanceUnit: ft
              35mm_f_2_8_custom_sensor_manual_coc_1_5m:
                summary: 35mm f/2.8, custom sensor (manual CoC), 1.5m
                value:
                  sensor: custom
                  coC: '0.05'
                  focalLength: '35'
                  aperture: '2.8'
                  distance: '1.5'
                  distanceUnit: m
      responses:
        '200':
          description: Tool output
          content:
            application/json:
              examples:
                50mm_f_5_6_full_frame_3m:
                  summary: 50mm f/5.6, full frame, 3m
                  value:
                    tool: camera-depth-of-field-calculator
                    tool_version: 1.0.1
                    outputs:
                      result: >-
                        In focus from 2.50 m to 3.74 m — total depth of field
                        1.24 m
                      summary:
                        - property: Hyperfocal distance
                          value: 14.93 m
                        - property: Near focus limit
                          value: 2.50 m
                        - property: Far focus limit
                          value: 3.74 m
                        - property: Total depth of field
                          value: 1.24 m
                        - property: DoF in front of subject
                          value: 0.50 m
                        - property: DoF behind subject
                          value: 0.74 m
                        - property: Side with more depth of field
                          value: Behind the subject (0.74 m vs 0.50 m in front)
                    credits_used: 3
                    credits_remaining: null
                24mm_f_11_aps_c_canon_5_feet:
                  summary: 24mm f/11, APS-C Canon, 5 feet
                  value:
                    tool: camera-depth-of-field-calculator
                    tool_version: 1.0.1
                    outputs:
                      result: >-
                        In focus from 3.24 ft to 10.97 ft — total depth of field
                        7.73 ft
                      summary:
                        - property: Hyperfocal distance
                          value: 9.12 ft
                        - property: Near focus limit
                          value: 3.24 ft
                        - property: Far focus limit
                          value: 10.97 ft
                        - property: Total depth of field
                          value: 7.73 ft
                        - property: DoF in front of subject
                          value: 1.76 ft
                        - property: DoF behind subject
                          value: 5.97 ft
                        - property: Side with more depth of field
                          value: Behind the subject (5.97 ft vs 1.76 ft in front)
                    credits_used: 3
                    credits_remaining: null
                24mm_f_11_aps_c_canon_10_feet_past_hyperfocal_far_is_infinite:
                  summary: >-
                    24mm f/11, APS-C Canon, 10 feet (past hyperfocal — far is
                    infinite)
                  value:
                    tool: camera-depth-of-field-calculator
                    tool_version: 1.0.1
                    outputs:
                      result: >-
                        In focus from 4.77 ft to infinity (hyperfocal distance
                        reached)
                      summary:
                        - property: Hyperfocal distance
                          value: 9.12 ft
                        - property: Near focus limit
                          value: 4.77 ft
                        - property: Far focus limit
                          value: ∞ (infinity)
                        - property: Total depth of field
                          value: ∞
                        - property: DoF in front of subject
                          value: 5.23 ft
                        - property: DoF behind subject
                          value: ∞
                        - property: Side with more depth of field
                          value: Behind the subject (extends to infinity)
                    credits_used: 3
                    credits_remaining: null
                35mm_f_2_8_custom_sensor_manual_coc_1_5m:
                  summary: 35mm f/2.8, custom sensor (manual CoC), 1.5m
                  value:
                    tool: camera-depth-of-field-calculator
                    tool_version: 1.0.1
                    outputs:
                      result: >-
                        In focus from 1.28 m to 1.80 m — total depth of field
                        0.52 m
                      summary:
                        - property: Hyperfocal distance
                          value: 8.79 m
                        - property: Near focus limit
                          value: 1.28 m
                        - property: Far focus limit
                          value: 1.80 m
                        - property: Total depth of field
                          value: 0.52 m
                        - property: DoF in front of subject
                          value: 0.22 m
                        - property: DoF behind subject
                          value: 0.30 m
                        - property: Side with more depth of field
                          value: Behind the subject (0.30 m vs 0.22 m in front)
                    credits_used: 3
                    credits_remaining: null
              schema:
                type: object
                required:
                  - tool
                  - tool_version
                  - outputs
                  - credits_used
                  - credits_remaining
                properties:
                  outputs:
                    type: object
                    properties:
                      result:
                        type: string
                        description: Result
                      summary:
                        type: array
                        description: Depth of Field Details
                        items:
                          type: object
                          properties:
                            property:
                              type: string
                              description: Property
                            value:
                              type: string
                              description: Value
                        x-iotools-columns:
                          - property
                          - value
                  tool:
                    type: string
                    description: The tool's slug, echoing the {slug} in the request path.
                  tool_version:
                    type: string
                    description: Output-contract version for this tool.
                  credits_used:
                    type: integer
                    description: >-
                      Credits this call consumed, after any settlement refund. 0
                      when metering is disabled.
                  credits_remaining:
                    type:
                      - integer
                      - 'null'
                    description: >-
                      Credits left in the current monthly allowance, or null
                      when metering is disabled.
                  request_id:
                    type: string
                    description: Correlation id, also sent as x-request-id.
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/InsufficientCredits'
        '403':
          $ref: '#/components/responses/ToolNotAllowed'
        '404':
          $ref: '#/components/responses/ToolNotFound'
        '413':
          $ref: '#/components/responses/PayloadTooLarge'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/ToolFailed'
        '503':
          $ref: '#/components/responses/ToolDisabled'
      security:
        - bearerAuth: []
components:
  responses:
    ValidationError:
      description: Invalid request.
      content:
        application/problem+json:
          schema:
            type: object
            description: >-
              RFC 9457 problem document, served as application/problem+json.
              Branch on `code`; `title` is human prose and may be reworded
              without notice. Some failures add extension members — `fields` on
              validation errors, `retry_after` on 429s,
              `credits_used`/`credits_remaining` on billing-adjacent failures —
              documented on the responses that carry them.
            required:
              - type
              - title
              - status
              - code
            properties:
              type:
                type: string
                format: uri
                description: Stable documentation URI for this failure.
                examples:
                  - https://iotools.cloud/docs/errors/validation_error
              title:
                type: string
                description: Short human-readable summary of the failure.
                examples:
                  - Invalid request
              status:
                type: integer
                description: HTTP status code, matching the response's own status.
              code:
                type: string
                description: >-
                  Stable machine-readable error code — branch on this, not
                  `title`.
                enum:
                  - validation_error
              detail:
                type: string
                description: Human explanation of this occurrence.
              request_id:
                type: string
                description: Correlation id, also sent as x-request-id.
              fields:
                type:
                  - object
                  - string
                additionalProperties:
                  type: string
                description: >-
                  What failed: a map of field name → message. Absent when the
                  body itself is malformed; a single string when the failure
                  isn't tied to one field.
          example:
            type: https://iotools.cloud/docs/errors/validation_error
            title: Invalid request
            status: 400
            code: validation_error
            detail: One or more inputs are invalid — see `fields`.
            request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
            fields:
              inputString: Required
    Unauthorized:
      description: Missing or invalid API key.
      content:
        application/problem+json:
          schema:
            type: object
            description: >-
              RFC 9457 problem document, served as application/problem+json.
              Branch on `code`; `title` is human prose and may be reworded
              without notice. Some failures add extension members — `fields` on
              validation errors, `retry_after` on 429s,
              `credits_used`/`credits_remaining` on billing-adjacent failures —
              documented on the responses that carry them.
            required:
              - type
              - title
              - status
              - code
            properties:
              type:
                type: string
                format: uri
                description: Stable documentation URI for this failure.
                examples:
                  - https://iotools.cloud/docs/errors/invalid_api_key
              title:
                type: string
                description: Short human-readable summary of the failure.
                examples:
                  - Invalid API key
              status:
                type: integer
                description: HTTP status code, matching the response's own status.
              code:
                type: string
                description: >-
                  Stable machine-readable error code — branch on this, not
                  `title`.
                enum:
                  - invalid_api_key
              detail:
                type: string
                description: Human explanation of this occurrence.
              request_id:
                type: string
                description: Correlation id, also sent as x-request-id.
          example:
            type: https://iotools.cloud/docs/errors/invalid_api_key
            title: Invalid API key
            status: 401
            code: invalid_api_key
            detail: 'Provide ''Authorization: Bearer <key>''.'
            request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
    InsufficientCredits:
      description: Monthly credit allowance exhausted.
      content:
        application/problem+json:
          schema:
            type: object
            description: >-
              RFC 9457 problem document, served as application/problem+json.
              Branch on `code`; `title` is human prose and may be reworded
              without notice. Some failures add extension members — `fields` on
              validation errors, `retry_after` on 429s,
              `credits_used`/`credits_remaining` on billing-adjacent failures —
              documented on the responses that carry them.
            required:
              - type
              - title
              - status
              - code
            properties:
              type:
                type: string
                format: uri
                description: Stable documentation URI for this failure.
                examples:
                  - https://iotools.cloud/docs/errors/insufficient_credits
              title:
                type: string
                description: Short human-readable summary of the failure.
                examples:
                  - Insufficient credits
              status:
                type: integer
                description: HTTP status code, matching the response's own status.
              code:
                type: string
                description: >-
                  Stable machine-readable error code — branch on this, not
                  `title`.
                enum:
                  - insufficient_credits
              detail:
                type: string
                description: Human explanation of this occurrence.
              request_id:
                type: string
                description: Correlation id, also sent as x-request-id.
              credits_used:
                type: integer
                description: Always 0 — a refused call charges nothing.
              credits_remaining:
                type: integer
                description: Credits left in the allowance — fewer than this call costs.
          example:
            type: https://iotools.cloud/docs/errors/insufficient_credits
            title: Insufficient credits
            status: 402
            code: insufficient_credits
            detail: This call costs 1 credit and 0 remain in this month's allowance.
            request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
            credits_used: 0
            credits_remaining: 0
    ToolNotAllowed:
      description: Tool exists but has no API surface.
      content:
        application/problem+json:
          schema:
            type: object
            description: >-
              RFC 9457 problem document, served as application/problem+json.
              Branch on `code`; `title` is human prose and may be reworded
              without notice. Some failures add extension members — `fields` on
              validation errors, `retry_after` on 429s,
              `credits_used`/`credits_remaining` on billing-adjacent failures —
              documented on the responses that carry them.
            required:
              - type
              - title
              - status
              - code
            properties:
              type:
                type: string
                format: uri
                description: Stable documentation URI for this failure.
                examples:
                  - https://iotools.cloud/docs/errors/tool_not_allowed
              title:
                type: string
                description: Short human-readable summary of the failure.
                examples:
                  - Tool not available over the API
              status:
                type: integer
                description: HTTP status code, matching the response's own status.
              code:
                type: string
                description: >-
                  Stable machine-readable error code — branch on this, not
                  `title`.
                enum:
                  - tool_not_allowed
              detail:
                type: string
                description: Human explanation of this occurrence.
              request_id:
                type: string
                description: Correlation id, also sent as x-request-id.
          example:
            type: https://iotools.cloud/docs/errors/tool_not_allowed
            title: Tool not available over the API
            status: 403
            code: tool_not_allowed
            detail: >-
              "Background Remover" is available on iotools.cloud but has no API
              endpoint.
            request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
    ToolNotFound:
      description: No such tool.
      content:
        application/problem+json:
          schema:
            type: object
            description: >-
              RFC 9457 problem document, served as application/problem+json.
              Branch on `code`; `title` is human prose and may be reworded
              without notice. Some failures add extension members — `fields` on
              validation errors, `retry_after` on 429s,
              `credits_used`/`credits_remaining` on billing-adjacent failures —
              documented on the responses that carry them.
            required:
              - type
              - title
              - status
              - code
            properties:
              type:
                type: string
                format: uri
                description: Stable documentation URI for this failure.
                examples:
                  - https://iotools.cloud/docs/errors/tool_not_found
              title:
                type: string
                description: Short human-readable summary of the failure.
                examples:
                  - Tool not found
              status:
                type: integer
                description: HTTP status code, matching the response's own status.
              code:
                type: string
                description: >-
                  Stable machine-readable error code — branch on this, not
                  `title`.
                enum:
                  - tool_not_found
              detail:
                type: string
                description: Human explanation of this occurrence.
              request_id:
                type: string
                description: Correlation id, also sent as x-request-id.
          example:
            type: https://iotools.cloud/docs/errors/tool_not_found
            title: Tool not found
            status: 404
            code: tool_not_found
            detail: No tool with that slug. See GET /v1/tools/list.
            request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
    PayloadTooLarge:
      description: Body too large.
      content:
        application/problem+json:
          schema:
            type: object
            description: >-
              RFC 9457 problem document, served as application/problem+json.
              Branch on `code`; `title` is human prose and may be reworded
              without notice. Some failures add extension members — `fields` on
              validation errors, `retry_after` on 429s,
              `credits_used`/`credits_remaining` on billing-adjacent failures —
              documented on the responses that carry them.
            required:
              - type
              - title
              - status
              - code
            properties:
              type:
                type: string
                format: uri
                description: Stable documentation URI for this failure.
                examples:
                  - https://iotools.cloud/docs/errors/payload_too_large
              title:
                type: string
                description: Short human-readable summary of the failure.
                examples:
                  - Payload too large
              status:
                type: integer
                description: HTTP status code, matching the response's own status.
              code:
                type: string
                description: >-
                  Stable machine-readable error code — branch on this, not
                  `title`.
                enum:
                  - payload_too_large
              detail:
                type: string
                description: Human explanation of this occurrence.
              request_id:
                type: string
                description: Correlation id, also sent as x-request-id.
          example:
            type: https://iotools.cloud/docs/errors/payload_too_large
            title: Payload too large
            status: 413
            code: payload_too_large
            detail: Request body exceeds this tool's size limit.
            request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
    RateLimited:
      description: Per-minute rate limit exceeded.
      headers:
        Retry-After:
          description: Seconds to wait before retrying (RFC 9110 delta-seconds).
          schema:
            type: integer
      content:
        application/problem+json:
          schema:
            type: object
            description: >-
              RFC 9457 problem document, served as application/problem+json.
              Branch on `code`; `title` is human prose and may be reworded
              without notice. Some failures add extension members — `fields` on
              validation errors, `retry_after` on 429s,
              `credits_used`/`credits_remaining` on billing-adjacent failures —
              documented on the responses that carry them.
            required:
              - type
              - title
              - status
              - code
            properties:
              type:
                type: string
                format: uri
                description: Stable documentation URI for this failure.
                examples:
                  - https://iotools.cloud/docs/errors/rate_limited
              title:
                type: string
                description: Short human-readable summary of the failure.
                examples:
                  - Rate limit exceeded
              status:
                type: integer
                description: HTTP status code, matching the response's own status.
              code:
                type: string
                description: >-
                  Stable machine-readable error code — branch on this, not
                  `title`.
                enum:
                  - rate_limited
              detail:
                type: string
                description: Human explanation of this occurrence.
              request_id:
                type: string
                description: Correlation id, also sent as x-request-id.
              retry_after:
                type: integer
                description: >-
                  Seconds until the window resets — the same value as the
                  `Retry-After` header.
          example:
            type: https://iotools.cloud/docs/errors/rate_limited
            title: Rate limit exceeded
            status: 429
            code: rate_limited
            detail: Too many requests. Retry in 30s.
            request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
            retry_after: 30
    ToolFailed:
      description: Tool failed to run.
      content:
        application/problem+json:
          schema:
            type: object
            description: >-
              RFC 9457 problem document, served as application/problem+json.
              Branch on `code`; `title` is human prose and may be reworded
              without notice. Some failures add extension members — `fields` on
              validation errors, `retry_after` on 429s,
              `credits_used`/`credits_remaining` on billing-adjacent failures —
              documented on the responses that carry them.
            required:
              - type
              - title
              - status
              - code
            properties:
              type:
                type: string
                format: uri
                description: Stable documentation URI for this failure.
                examples:
                  - https://iotools.cloud/docs/errors/processing_error
                  - https://iotools.cloud/docs/errors/internal_error
              title:
                type: string
                description: Short human-readable summary of the failure.
                examples:
                  - Tool failed to run
                  - Internal error
              status:
                type: integer
                description: HTTP status code, matching the response's own status.
              code:
                type: string
                description: >-
                  Stable machine-readable error code — branch on this, not
                  `title`.
                enum:
                  - processing_error
                  - internal_error
              detail:
                type: string
                description: Human explanation of this occurrence.
              request_id:
                type: string
                description: Correlation id, also sent as x-request-id.
              credits_used:
                type: integer
                description: >-
                  Always 0 on `processing_error` — a failed run is refunded,
                  floor included.
              credits_remaining:
                type: integer
                description: >-
                  Credits left after the refund. Absent when metering is
                  disabled.
          example:
            type: https://iotools.cloud/docs/errors/processing_error
            title: Tool failed to run
            status: 500
            code: processing_error
            detail: The tool failed to run. Please try again.
            request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
            credits_used: 0
    ToolDisabled:
      description: Tool temporarily disabled.
      content:
        application/problem+json:
          schema:
            type: object
            description: >-
              RFC 9457 problem document, served as application/problem+json.
              Branch on `code`; `title` is human prose and may be reworded
              without notice. Some failures add extension members — `fields` on
              validation errors, `retry_after` on 429s,
              `credits_used`/`credits_remaining` on billing-adjacent failures —
              documented on the responses that carry them.
            required:
              - type
              - title
              - status
              - code
            properties:
              type:
                type: string
                format: uri
                description: Stable documentation URI for this failure.
                examples:
                  - https://iotools.cloud/docs/errors/tool_disabled
                  - https://iotools.cloud/docs/errors/api_unconfigured
              title:
                type: string
                description: Short human-readable summary of the failure.
                examples:
                  - Tool temporarily disabled
                  - API not configured
              status:
                type: integer
                description: HTTP status code, matching the response's own status.
              code:
                type: string
                description: >-
                  Stable machine-readable error code — branch on this, not
                  `title`.
                enum:
                  - tool_disabled
                  - api_unconfigured
              detail:
                type: string
                description: Human explanation of this occurrence.
              request_id:
                type: string
                description: Correlation id, also sent as x-request-id.
          example:
            type: https://iotools.cloud/docs/errors/tool_disabled
            title: Tool temporarily disabled
            status: 503
            code: tool_disabled
            detail: This tool is temporarily unavailable. Try again shortly.
            request_id: e4042b29-8f1e-4c7a-9b52-6f0d1a3c7e11
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: iot_live_…

````