The Pains of Qualitative Analysis with NVivo

NVivo is a software that aims to make it easier to do analysis by coding on qualitative data. For example, you have some text, and you want to know what parts of it discuss certain points. Think of this kind of coding as going over an interview transcript and highlighting different passages based on what they mention. But NVivo goes further and allows you to perform complex queries on coded text, such as asking “What are the things young people who don’t like apples talking about”. It can generate graphs and tabulated summaries. NVivo is incredibly powerful… but, it is one of those tools that is considered industry standard, and yet has an absolutely awful user experience.

What follows in this blog post is an unsorted ramble of frustrations that I’ve encountered while using NVivo.


A Venn diagram. Useful and usable software barely overlap.
The overlap between useful and usable software is vanishingly small. NVivo is not in that overlap.

Useful software is software that helps me complete a task. It has powerful capabilities. It solves problems.

Usable software is one which I don’t have to think about to use. It works for me, and doesn’t make me work.

Unfortunately, many of the tools I use day to day fall into one or the other category, but not both. NVivo is a pretty powerful and useful piece of software, but from my experimentation lacks the usability. Unfortunately, it is also the most fully featured and useful qualitative analysis tool out there that I’ve tried. When I last searched alternativeto.net for similar applications I failed to turn up anything that looked useful. And in any case that brings up my first fault:

It’s proprietary. I don’t particularly care that the program itself is proprietary, what really bugs me is the file format. If the file format were open and easily documented, it would be a cinch to use the basic NVivo UI to do my coding, and then complete the analysis elsewhere. Alas, it uses some arcane combination of binaries, undocumented Microsoft SQL tables and I gave up trying to set up the only decently documented open solution (BarraQDA nvivotools) after several failed attempts.

So I am stuck using it, and the only way to get my data out is to formulate queries that I can extract as CSV files. Except for some queries it has an upper limit on how much data it will return (50 coded items), and you can’t increase that limit. So for some queries, your data will be forever inaccessible.

NVivo lets you query your data in many different ways, which is an incredibly valuable way to spot trends in data. It even lets you save and index these queries for quicker access later on. Except sometimes it doesn’t. For some reason, “Hierarchy Queries” cannot be saved, and if you want to look up a result later on, you better be prepared to re-build and run your query again whenever you need it.

NVivo’s built in plotting software makes it simple to turn coded data into graphs, and it supports many different visualisations. But the graphical display is so badly optimised that a query that returns too many columns of data will create a graph that completely locks up the UI and forces you to quit and restart.

There are a number of import options that allow you to auto-classify the documents and data you are working with. This is a really good way to cross-code and spot trends amongst demographic groups, for example. But, and of course there’s a but, the format for importing this data is unclear, and requires proprietary formatted data. To save anyone else who comes across this issue and searches for it, here’s how you “Prepare a File Classification Sheet to Import Attributes into NVivo 12”:

  • Open a blank spreadsheet file
  • In the first row, add the column headers
  • The first cell should be named what you want your files to be categorised as
  • e.g. for case files, “cases” (no quotes) is acceptable
  • The following cells should be the names of your case attributes
  • Then, in each row put the name of the file or case in the first column
  • Note: the names must be the same as it appears in NVivo. Avoid hierarchies altogether.
  • In subsequent columns put the values of the attributes
  • Save this file as a 2003 Microsoft XLS File (Not CSV, not XLSX, not ODS)
  • In NVivo, from the Import tab, import the file you’ve made
  • You only want to do this once, so leave the tick boxes on step 2 all selected
  • On step 3, select “as hierarchical names”
  • In step 4, you can decide how best to format your data for your needs

It shouldn’t be that difficult to import some data, but there we go. It wouldn’t have been so bad had it been better documented. Unfortunately, the NVivo website hosts documentation for a number of different versions of NVivo, and you need to know the right one when looking for help. The documentation itself also isn’t great to search through if you’re still trying to learn the language.

Once you get to grips with it, the user interface mostly makes sense, but some of the naming conventions are totally impenetrable. NVivo’s tabular interface for files and cases counts Codes, Files and References separately. What counts as a code and a file makes sense, but what accounts for a reference is rather unclear. Similarly, many parts of the analysis toolset offer a coverage metric. But it is unclear what kind of coverage is being measured. Is it total coverage of a file? A relative measurement of coverage compared to the total set of coded items? Who knows.

NVivo’s user interface also makes it very difficult to handle coding itself. Though it is far easier than just coding with pen and paper, and better than any of the other tools out there, I do find that it can get painful at times trying to manage codes. First off, I could never get the quick coding system to actually be quick. Not enough to matter with hundreds of files to go through. The moment you have more than a few code with similar names, typing to filter them becomes a chore. If you choose to use a mouse, that’s a one-way street to Repetitive Strain Injury. Even a tablet and pen gets irritating after a while. I’m honestly not sure if this is a limitation of NVivo or just the process of qualitative analysis coding in general, but considering it’s a paid product, I’d expect them to have at least tried to build an interface that makes the job a bit less mind numbing and wrist wrenching.

The interface is also slow. It feels sluggish. Trying to open a text file of moderate size feels like we’ve regressed back to the late 90s. Sometimes taking seconds to fully render. Once it’s open, there’s no problem, but getting there, especially when there’s a lot of files in a project can be difficult.

The auto-coding tools in NVivo is an incredibly useful feature, and it is usable. Kind of. For some reason the libraries to do the auto-coding are not installed by default and you need to install them separately. OK, that’s not a big deal, though it will be if in the future NVivo shuts down the server that gives those libraries. Once it’s done, the way it gathers up related topics to code and explore is pretty good. It’s somewhat annoying that it doesn’t aggregate related codes into a single top level code, which is an option that you should be able to enable, but which I had trouble with. But once it’s done, it works well with my own manual coding and the rest of the built-in analysis tools.

It won’t work with wine on Linux. Save your time. If you’re on Linux, use a windows VM or get another machine.

Don’t try to collaborate with NVivo. There is no cloud sharing, at least in the version I have, and any collaboration requires continuous syncing of a several hundred megabyte large database file between participants. It has features to allow you to identify who did what, which is very useful, but it’s easy to end up with duplicated user IDs which you need to be careful of.


That brings to an end venting my frustration of some of the pains I’ve had when using NVivo. It really bugs me how we have software developers with the insight and ability to build such powerful tools, and yet apparently lacks the QA manpower or ability to make it usable.

Don’t think I’m unfairly picking on just NVivo here. I was listing off all the annoyances as I encountered them before writing this up, and in retrospect I feel I should have been tracking all of the things that went well, and there were many times where it was a real help to have NVivo.

And it’s not just NVivo that has usability problems of course. As I’m typing this blog post my machine made several alert sounds demanding my attention, without any indication of what app they came from. Something on my machine opened a tab (to the Microsoft office homepage) in my browser and interrupted my typing.

Useful software that fails to be usable is a real problem across the entire software sector. And every day I get more and more tired of putting up with it. Hopefully in time NVivo itself, its alternatives, or just software in general will mature to a stage where no one else needs to deal with grips and annoyances.

If you made it this far, thanks for reading. Do share any comments you have, but know that I’m not looking for suggestions or fixes at the moment. Once I’m done with this project, I’m never touching qualitative analysis again 🙂

Join the Conversation

  1. I haven’t used NVivo myself. But I have had that same experience with a lot of software that I have to use in my day to day life. Quite expensive licenses for a software that when works is powerful, but more often than not it is a pain to use.

    A good useful-usable software is… rare.

    1. You just might want to move over to Linux from Microsoft. I did after 20+ years of aggravation and truly glad I did. I now use Ubuntu religiously on all my machines. I have more flexibility and availability and no aggravation. Even Microsoft started embedding Linux in its kernel. Best of all NOTHING on the Linux framework ever cost me a dime!!!

  2. I have found exactly the same thing. Lecturers at my department always spoke of how useful NVivo was, but I noticed none of the researchers actually used it. I use it almost exclusively for coding PDFs (some entire ebooks), but its just too much for my lil ol’ pentium gold; been looking for lighter or open source alternatives for years but theres nothing doing what it does.

Comment