diff --git a/applications/utilities/surface/surfaceMeshInfo/Make/files b/applications/utilities/surface/surfaceMeshInfo/Make/files
new file mode 100644
index 0000000000..a008b33fd2
--- /dev/null
+++ b/applications/utilities/surface/surfaceMeshInfo/Make/files
@@ -0,0 +1,3 @@
+surfaceMeshInfo.C
+
+EXE = $(FOAM_APPBIN)/surfaceMeshInfo
diff --git a/applications/utilities/surface/surfaceMeshInfo/Make/options b/applications/utilities/surface/surfaceMeshInfo/Make/options
new file mode 100644
index 0000000000..42b30c8652
--- /dev/null
+++ b/applications/utilities/surface/surfaceMeshInfo/Make/options
@@ -0,0 +1,5 @@
+EXE_INC = \
+ -I$(LIB_SRC)/meshTools/lnInclude \
+ -I$(LIB_SRC)/surfMesh/lnInclude
+
+EXE_LIBS = -lmeshTools -lsurfMesh
diff --git a/applications/utilities/surface/surfaceMeshInfo/surfaceMeshInfo.C b/applications/utilities/surface/surfaceMeshInfo/surfaceMeshInfo.C
new file mode 100644
index 0000000000..39d672a341
--- /dev/null
+++ b/applications/utilities/surface/surfaceMeshInfo/surfaceMeshInfo.C
@@ -0,0 +1,230 @@
+/*---------------------------------------------------------------------------*\
+ ========= |
+ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
+ \\ / O peration |
+ \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd.
+ \\/ M anipulation |
+-------------------------------------------------------------------------------
+License
+ This file is part of OpenFOAM.
+
+ OpenFOAM is free software: you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with OpenFOAM. If not, see .
+
+Application
+ surfaceMeshInfo
+
+Description
+ Miscellaneous information about surface meshes
+
+Usage
+ - surfaceMeshInfo surfaceFile [OPTION]
+
+ \param -areas \n
+ Report area for each face.
+
+ \param -scale \ \n
+ Specify a scaling factor when reading files.
+
+ \param -xml \n
+ Write output in XML format.
+
+Note
+ The filename extensions are used to determine the file format type.
+
+ The XML-like output can be useful for extraction with other tools,
+ but either output format can be easily extracted with a simple sed
+ command:
+ \verbatim
+ surfaceMeshInfo surfaceFile -areas | \
+ sed -ne '/areas/,/:/{ /:/!p }'
+
+ surfaceMeshInfo surfaceFile -areas -xml | \
+ sed -ne '/::canRead(importName, true))
+ {
+ return 1;
+ }
+
+ const bool writeXML = args.optionFound("xml");
+ const bool writeAreas = args.optionFound("areas");
+
+
+ // use UnsortedMeshedSurface, not MeshedSurface to maintain ordering
+ UnsortedMeshedSurface surf(importName);
+
+ scalar scaling = 0;
+ if (args.optionReadIfPresent("scale", scaling) && scaling > 0)
+ {
+ Info<< " -scale " << scaling << endl;
+ surf.scalePoints(scaling);
+ }
+
+ scalar areaTotal = 0;
+
+ if (writeXML)
+ {
+ Info<<"" << nl
+ <<"" << nl
+ << "" << surf.nPoints() << "" << nl
+ << "" << surf.size() << "" << nl;
+
+ if (writeAreas)
+ {
+ Info<<"" << nl;
+ }
+ }
+ else
+ {
+ Info<< "nPoints : " << surf.nPoints() << nl
+ << "nFaces : " << surf.size() << nl;
+
+ if (writeAreas)
+ {
+ Info<< "areas : " << nl;
+ }
+ }
+
+ forAll(surf, faceI)
+ {
+ scalar fArea = mag(faceArea(surf[faceI], surf.points()));
+ areaTotal += fArea;
+
+ if (writeAreas)
+ {
+ Info<< fArea << nl;
+ }
+ }
+
+ if (writeXML)
+ {
+ if (writeAreas)
+ {
+ Info<<"" << nl;
+ }
+
+ Info<< "" << areaTotal << "" << nl
+ << "" << nl;
+ }
+ else
+ {
+ Info<< "area : " << areaTotal << nl;
+ }
+
+ return 0;
+}
+
+// ************************************************************************* //