---
tag: m0020
title: List SD Card
brief: List the contents of the SD Card.
author: thinkyhead

group: sdcard
requires: SDSUPPORT

codes: [ M20 ]
related: [ M33 ]

parameters:

- tag: F
  since: 2.0.9.4
  optional: true
  description: Only list BIN files. Used by host plugins to facilitate firmware upload.
  requires: CUSTOM_FIRMWARE_UPLOAD
  values:
  - type: flag

- tag: L
  since: 2.0.9
  optional: true
  description: Include the long filename in the listing.
  requires: LONG_FILENAME_HOST_SUPPORT
  values:
  - type: flag

- tag: T
  since: 2.1.2
  optional: true
  description: Include the file timestamp in the listing.
  requires: M20_TIMESTAMP_SUPPORT
  values:
  - type: flag

examples:

- pre: List the contents of the SD card
  post: The firmware will send no other output between "Begin file list" and "End file list."
  code: |
    > M20
    Begin file list
    MYFILE.GCO 14129
    SUBDIR~1/MORETH\~1.GCO 68447
    End file list
    ok

- pre: List files with long filename (for display)
  post: This format produces a prettier File Manager in OctoPrint, but the long name is not used in selecting the file to print, nor are folder long names included.
  code: |
    > M20 L
    Begin file list
    MYFILE.GCO 14129 MyFile.gcode
    SUBDIR~1/MORETH\~1.GCO 68447 Sub Directory/MoretHall.gcode
    End file list
    ok

- pre: List files with file modification timestamp (for display)
  post: OctoPrint 1.9+ uses the timestamp to display file upload times.
  code: |
    > M20 T
    Begin file list
    MYFILE.GCO 14129 0x5515758F
    SUBDIR~1/MORETH\~1.GCO 68447 0x55195745
    End file list
    ok

    > M20 L T
    Begin file list
    MYFILE.GCO 14129 0x5515758F MyFile.gcode
    SUBDIR~1/MORETH\~1.GCO 68447 0x55195745 Sub Directory/MoretHall.gcode
    End file list
    ok

---

List all printable files on the SD card back to the requesting serial port in compact DOS 8.3 format. Only files with `.gcode`, `.gco`, and `.g` extensions will be listed. Hidden files (beginning with `.`) will not be listed.

Hosts or serial controllers should send `M20` to get a DOS 8.3 file listing of the active media device that includes file sizes.

The file size is included in the output since Marlin 1.1.0.
