You can achieve this by using include.
Syntax<#include path>or<#include path options>path: The path of the file to include; an expression that evaluates to a string. (With other words, it doesn't have to be a fixed string, it can also be something like, for example,profile.baseDir + "/menu.ftl".). Example: Assume /common/copyright.ftl contains: Copyright 2001-2002 ${me} <br> All rights reserved. Another template that include above template <#assign me = "Juila Smith"> <h1>Some test</h1> <p>Yeah. <hr> <#include "/common/copyright.ftl"> OUTPUT <h1>Some test</h1> <p>Yeah. <hr> Copyright 2001-2002 Juila Smith All rights reserved. Theincludedirective is not really replaced by the content of the included file, instead it processes the included file each time when FreeMarker reaches theincludedirective in the course of template processing. So for example if theincludeis inside alistloop, you can specify different file names in each cycle.