Font Awesome not working, icons showing as squares

So I’m trying to prototype a marketing page and I’m using Bootstrap and the new Font Awesome file. The problem is that when I try to use an icon, all that gets rendered on the page is a big square.

Here’s how I include the files in the head:

        <title>Page Title</title>
        <link rel="stylesheet" href="css/bootstrap.css" rel="nofollow noreferrer noopener">
        <link rel="stylesheet" href="css/bootstrap-responsive.css" rel="nofollow noreferrer noopener">
        <link rel="stylesheet" href="css/font-awesome.css" rel="nofollow noreferrer noopener">
        <link rel="stylesheet" href="css/app.css" rel="nofollow noreferrer noopener">
        <!--[if IE 7]>
            <link rel="stylesheet" href="css/font-awesome-ie7.min.css" rel="nofollow noreferrer noopener">

And here’s an example of me trying to use an icon:

<i class="icon-camera-retro"></i>

But all that gets rendered in a big square. Does anyone know what could be going on?


Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

You must have 2 classes, the fa class and the class that identifies the desired icon fa-twitter, fa-search, etc …

<!-- Wrong -->
<i class="fa-search"></i>    

<!-- Correct -->
<i class="fa fa-search"></i>

Bootstrap 5 update

Note: “The fa prefix has been deprecated in version 5. The new default is the fas solid style and the fab style for brands.” – Terje Solem

Method 2

According to the documentation (step 3), you need to modify the supplied CSS file to point to the font location on your site.

Method 3

Use this

<link href="" rel="nofollow noreferrer noopener" rel="stylesheet">

I had similar issue with Amazon Cloudfront CDN but it got resolved after I started loading it from maxcdn

Method 4

Check to ensure that you haven’t inadvertently changed the font family on the icon. If you have changed the .fa item’s font family from: FontAwesome the icon will not show. It’s always something silly and small.

Method 5

If you are using LESS or SASS, open the font-awesome.less/sass file and edit the path variable @fa-font-path: "../font"; which points to the actual fonts:

@fa-font-path: "../font";

@font-face {
  font-family: 'FontAwesome';
  src: url('@{fa-font-path}/fontawesome-webfont.eot?v=3.0.1');
  src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'),
    url('@{fa-font-path}/fontawesome-webfont.woff?v=3.0.1') format('woff'),
    url('@{fa-font-path}/fontawesome-webfont.ttf?v=3.0.1') format('truetype');
  font-weight: normal;
  font-style: normal;

Same with CSS, except you edit the path in the @font-face declaration block:

@font-face {
  font-family: 'FontAwesome';
  src: url('your/path/fontawesome-webfont.eot?v=3.0.1');
  src: url('your/path/fontawesome-webfont.eot?#iefix&v=3.0.1') format('embedded-opentype'),
    url('your/path/fontawesome-webfont.woff?v=3.0.1') format('woff'),
    url('your/path/fontawesome-webfont.ttf?v=3.0.1') format('truetype');
  font-weight: normal;
  font-style: normal;

Method 6

Open your font-awesome.css
theres code like :

@font-face {
  font-family: 'FontAwesome';
  src: url('../fonts/fontawesome-webfont.eot?v=4.5.0');
  src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.5.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.5.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.5.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.5.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.5.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;

you must have folder like :

font awesome -> css
             -> fonts

or the easiest way :

<link rel="stylesheet" href="" rel="nofollow noreferrer noopener">

Method 7

You must have 2 classes, the fas class and the fa-* class. See Basic Use in the docs:

The fa prefix has been deprecated in version 5. The new default is the fas solid style and the fab style for brands.

// Correct (version >= 5)
<i class="fas fa-search"></i>    

// Wrong (version < 5)
<i class="fa fa-search"></i>

Method 8

I am using Font Awesome 4.3.0 just linking from maxcdn works as mentioned here,

But to host in your server putting fonts and CSS in same folder worked for me, like this

Font Awesome not working, icons showing as squares

Then just link the CSS:

<link href="~/fonts/font-awesome.min.css" rel="stylesheet" />

Method 9

I tried to solve the same problem with a few previous solutions, but they didn’t work in my situation.
Finally, I added these 2 lines in HEAD and it worked:

<link rel="stylesheet" href="" rel="nofollow noreferrer noopener">
<link rel="stylesheet" href="" rel="nofollow noreferrer noopener">

Method 10

If you are using the version 5.* or greater, then you have to use the


Including the fontawesome.css does not work as it has no reference to the webfonts folder and there is no reference to the @font-face or font-family

You can inspect this by searching the code for the font-family property in fontawesome.css or fontawesome.min.css

Method 11

I had this issue and went through each step carefully…even though I’ve been using FA for ages…and then I realized I had this line in my mail css file:

* {
font-family: Arial !important;

Silly mistake, but this could tip off someone in future!

Method 12

I had this issue. The problem was I had a font-family CSS style with !important overriding the fontawesome font.

Method 13

In case you are working with Maven and Apache Wicket also check for the following in order to try to resolve the issue with Font-Awesome and icons not being loaded:

If you have placed your files for example in the following file structure


Check 1) Are you correctly using a Package Resource Guard in order to allow to load the font files correctly?

Example from your class which extends WebApplication:

public void init() {
    get().getResourceSettings().setPackageResourceGuard(new PackageResourceGuard());


Check 2) After you have made sure that all fonts are correctly transferred to the Web Browser, check for what has been actually transferred to the Web Browser, i.e., did the integrity of the font files change? Compare the files in your source directory and the files transferred to the Web Browser using, e.g., the Web Developer Toolbar of Firefox and DiffDog (for file comparison).

In particular if you are using Maven be aware of resource filtering. Do not filter the folder where your /font files are contained – otherwise they will be corrupted.

Example from your pom.xml

    <finalName>Your project</finalName>

In the example above we do not filter the folder src/main/java, where the css and font files are contained.

For further information on the filtering of binary data please also see the documentation:

In particular the documentation warns: “Warning: Do not filter files with
binary content like images! This will most likely result in corrupt output.
If you have both text files and binary files as resources, you need to
declare two mutually exclusive resource sets. The first resource set
defines the files to be filtered and the other resource set defines the
files to copy unaltered…”

Method 14

As of Dec 2018, I find it easier to use the stable version 4.7.0 hosted on bootstrapcdn instead of the font-awesome 5.x.x cdn on their website — since every time they upgrade minor versions the previous version WILL break.

<link media="all" rel="stylesheet" href="" rel="nofollow noreferrer noopener">

Icons are the same:

<i class="fa fa-facebook"></i>

Method 15

font-weight: 900;

I had a different issue with Font Awesome 5.
Default font-weight should be 900 for FontAwesome icons but I overwrote it to 400 for span and i tags.
It just worked, when I corrected it.

Here is the issue reference in their Github page,

Method 16

This should be much simpler in the new version 3.0. Easiest is to point to the Bootstrap CDN:

Method 17

If your server is IIS, be sure to add the correct MIME to serve .woff file extension.
The correct MIME is application/octet-stream

Method 18

You must return the header Access-Control-Allow-Origin to * for your fonts files

Method 19

After struggling for finding a solution and NOT finding the official documentation helpful, this solved the issue for me:

  1. Download the I’m using version 5.10.2 and i got it from here
  2. Inside the zip file there are several folders.You only need css and webfonts folders
    enter image description here
    1. Create 2 folders in your web projects, and name them css and webfonts.
      enter image description here

These names are mandatory. Now copy the content of css and webfonts from the zip into the corresponding folders in your project. And that’s all!

Beware fontawesome! Awesomeness is making things simple for the user!

Method 20

I was having the same issue with font awesome 5 downloaded with yarn,
I made added the min.css file ALONG with the all.js file.

Hope this helps someone someone

<link  rel="stylesheet"   href="node_modules/@fortawesome/fontawesome-free/css/fontawesome.min.css" rel="nofollow noreferrer noopener">
<script src="node_modules/@fortawesome/fontawesome-free/js/all.js" charset="utf-8"></script>

Method 21

It could be possible that your font path is not correct so that css not able to load the font and render the icons so you need to provide the stranded path of attached fonts.

@font-face { 
font-family: "FontAwesome";
src: url("fonts/fontawesome-webfont.eot");

Method 22

Use this <i class="fa fa-camera-retro" ></i> you have not defined fa classes

Method 23

Starting in version 5, if you downloaded the package from this site:

The fonts are in the all.css and all.min.css file.

This is what your reference would look like using the latest version now (replace with your folder):

<link href="/MyProject/Content/fontawesome-free-5.10.1-web/css/all.min.css" rel="nofollow noreferrer noopener" rel="stylesheet">

Method 24

I use the Official Font Awesome SASS Ruby Gem and fixed the error by adding the below line to my application.css.scss

@import "font-awesome-sprockets";


The font-awesome-sprockets file includes the sprockets assest helper Sass functions used for finding the proper path to the font file.

Method 25

if your using sass and have imported in your main.scss

@import '../vendor/font-awesome/scss/font-awesome.scss';

The error may come from the font-awesome.scss file that is looking for the font files in it’s relative path.

So remember to override the $fa-font-path variable:

$fa-font-path: "" !default;

like this there is no need to add the cdn in your index.html

Method 26

Double check the fontawesome-all.css file – at the very bottom there will be a path to the webfonts folder. Mine had “../webfonts” format in it, which meant that the css file would be looking 1 level up from where it is. As all of my css files were in css folder and I added the fonts to the same folder, this was not working.

Just move your fonts folder up a level and all should be well 🙂

Tested with Font Awesome 5.0

Method 27

Use with the upper class

<div class="container">
  <i class="fa fa-facebook"></i>

Method 28

The /css/all.css file contains the core styling plus all of the icon styles that you’ll need when using Font Awesome. The /webfonts folder contains all of the typeface files that the above CSS references and depends on.

Copy the entire /webfonts folder and the /css/all.css into your project’s static assets directory (or where ever you prefer to keep front end assets or vendor stuff).

Add a reference to the copied /css/all.css file into the of each template or page that you want to use Font Awesome on.

Just Visit –
You will get the answer.

Method 29

With the (free) Font Awesome 5 version, there’s this tiny detail which was hard to figure out for me and I didn’t pay attention to it:

Style   Availability    Style Prefix    Example Rendering
Solid   Free            fas             <i class="fas fa-camera"></i>
Brands  Free            fab             <i class="fab fa-font-awesome"></i>

(extracted from the documentation)

With this cited, brand icons such as fa-twitter or fa-react need to be used with class fab while all other (free) icons need to be used with class fas. That’s easy to oversee.

Method 30

I have changed from 3.2.1 to 4.0.1 and the folder was font and now is called fonts.

src: url('../font/fontawesome-webfont.eot?v=3.2.1');

src: url('../fonts/fontawesome-webfont.eot?v=4.0.1');

All methods was sourced from or, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Notify of

Inline Feedbacks
View all comments
Would love your thoughts, please comment.x