What is a .M file?

It depends. 2 unrelated formats use the .m extension, so the name alone cannot tell you what you have. The bytes can: each format below starts differently, and dropping the file on our detector settles it in a second without uploading anything.

Matlab source

Code · MIME type text/x-matlab

ObjectiveC source

Code · MIME type text/x-objc · also .mm

Why one extension, several formats

Extensions are a convention, not a registry. Any program can claim any three or four letters, and when two did so independently, both stuck. Operating systems resolve the clash by file association, so a double-click opens whichever application last registered .m, which may be the wrong one. Looking at the first bytes removes the guesswork: a format's signature is fixed by its specification, while its extension is whatever the file was last named.

Check it from a terminal

# macOS and Linux
xxd -l 16 file.m
file file.m

# Windows PowerShell
Format-Hex -Path file.m -Count 16