M4 ist insofern ein Makroprozessor, als es bei der Ausführung seinen Input zum Output der Makros kopiert. Die Makros sind entweder eingebaut oder vom Benutzer definiert und können mit beliebig vielen Parametern aufgerufen werden. Neben der Makroverarbeitung, besitzt M4 noch weitere eingebaute Funktionen zum Inkludieren von benannten Dateien, Ausführen von UNIX-Befehlen, Integer-Rechenoperationen, verschiedene Manipulationen von Text, Rekursion, etc. M4 kann als Frontend für einen Compiler dienen oder als alleinstehender Makroprozessor.
Mit die größte Anwendung erfährt M4 im GNU Autoconf Projekt.