---
tag: m0303
title: PID autotune
brief: Auto-tune the PID system to find stable values.
author: thinkyhead

requires: PIDTEMP|PIDTEMPBED
group: thermal

codes: [ M303 ]

notes:
  - Requires `PIDTEMP` or `PIDTEMPBED`.
  - View current PID values with [`M503`](/docs/gcode/M503.html).
  - If `EEPROM_SETTINGS` is enabled, all PID values are saved with [`M500`](/docs/gcode/M500.html), loaded with [`M501`](/docs/gcode/M501.html), and reset with [`M502`](/docs/gcode/M502.html).

parameters:
  -
    tag: E
    optional: true
    description: Hotend index (-1 for heated bed). Default 0.
    values:
      -
        tag: index
        type: int
  -
    tag: C
    optional: false
    description: Cycles. At least 3 cycles are required. Default 5.
    values:
      -
        tag: count
        type: int
  -
    tag: S
    optional: false
    description: Target temperature
    values:
      -
        tag: temp
        type: float
  -
    tag: U
    optional: false
    description: Use PID result. (Otherwise just print it out.)
    values:
      -
        tag: flag
        type: bool
  -
    tag: D
    optional: false
    description: Toggle activation of `PID_DEBUG` output.
    values:
      -
        tag: flag
        type: bool
  -
    tag: D
    optional: false
    description: Toggle PID debug output on / off (and take no further action). (Requires `PID_DEBUG`)
    values:
      -
        tag: action

examples:
-
  pre: 'Auto-tune hotend at 210 °C for 8 cycles:'
  code:
    - M303 E0 C8 S210
-
  pre: 'Auto-tune bed at 60 °C for 8 cycles:'
  code:
    - M303 E-1 C8 S60
---

This command initiates a process of heating and cooling to determine the proper PID values for the specified hotend or the heated bed.
