다중 문서 인터페이스(Multiple Document Interface, MDI)는 그래픽 사용자 인터페이스(GUI)의 한 형태로, 여러 개의 창이 하나의 부모 창(프레임 창) 안에 자식 창으로서 존재하는 구조를 말한다. 이 구조에서는 각 문서가 애플리케이션의 주 창 내부에 별도의 자식 창으로 표시되며, 자식 창이 다시 다른 창을 포함하여 복잡하게 중첩된 계층 구조를 만들 수도 있다. 이와 대비되는 개념으로, 모든 창이 서로 독립적으로 존재하는 단일 문서 인터페이스(Single Document Interface, SDI)가 있다.
MDI의 개념은 마이크로소프트 윈도우 프로그래밍 환경에서 특히 널리 사용되었으며, 마이크로소프트는 이를 위한 프로그래밍 인터페이스 사양을 제공하였다. MDI 애플리케이션에서는 공통된 메뉴 바와 툴 바를 여러 자식 창이 공유함으로써 화면 공간을 효율적으로 사용할 수 있고, 자식 창들을 한꺼번에 최소화·최대화하거나 숨기고 표시할 수 있다. 또한 "타일(Tile)"과 "캐스케이드(Cascade)"와 같은 창 배치 기능을 자식 창에 구현할 수 있다는 장점이 있다.
반면 MDI는 여러 가지 단점도 지닌다. 복수의 모니터를 사용하는 환경에서 부모 창이 여러 모니터에 걸쳐 있을 경우 구현이 어려울 수 있으며, 서로 다른 애플리케이션의 창을 동시에 배열하여 작업하기가 상대적으로 불편하다. 또한 공유 메뉴의 변화가 일부 사용자에게 혼란을 줄 수 있고, MDI 자식 창의 동작 방식이 SDI 애플리케이션의 창과 미묘하게 달라 사용자가 별도의 개념을 학습해야 할 필요가 있다는 지적도 있다.
MDI와 SDI의 선호도에 대해서는 사용자 커뮤니티에서 오랫동안 논의가 있어 왔다. 마이크로소프트 오피스의 경우 버전에 따라 SDI와 MDI 방식을 오가며 적용한 사례가 대표적이다. 최근에는 MDI 애플리케이션에서 탭(Tab)을 사용하여 열린 문서를 관리하는 탭 문서 인터페이스(Tabbed Document Interface, TDI) 방식이 점차 보편화되었다.
MDI를 지원하는 대표적인 애플리케이션으로는 어도비 포토샵(윈도우 버전), 비주얼 스튜디오 6, mIRC 등이 있으며, 통합 개발 환경(IDE) 스타일의 인터페이스는 MDI의 기능적 확장 형태로 간주되기도 한다. 자바의 Swing 툴킷은 JDesktopPane 클래스를 통해 MDI를 구현할 수 있는 기능을 제공하며, GTK는 MDI에 대한 표준화된 지원을 제공하지 않는 것으로 알려져 있다.