Powerful HTML5 based graph visualizations with cytoscape.js library works with every major browser and platform

Graph DB

Graphlytic supports the world's leading graph database Neo4j which enables us to give you fantastic performance


Look for patterns in your data with easy to use layouts, filtering or mapping data to visual properties like color or size

Scheduled Jobs

With Jobs it's easy to write and schedule your own scripts for importing data, searching patterns (with Cypher or Gremlin), and sending emails


Data analysis doesn't have to be a lonely job. Collaborate with other users and share your findings or export images and data

Business Solutions

Contact us if you are interested in using Graphlytic in specific business cases. We are happy to help you with the setup

Feature Clips

Select some interesting category and learn new features in few minutes


Explore relationships between nodes in the graph visualization or find the shortest path between nodes easily.
  • Start searching for nodes with the top search bar and add nodes to the graph visualization.
  • Double click on a node in order to add node's relationship and related nodes into the graph visualization.
  • You can also select multiple nodes and explore (or expand) them at once with the explore button in the toolbox.
  • To hide some nodes, simply select them and click the hide button in the toolbox.
  • Use different layout algorithms to find the right pattern.
  • Use histograms or frequency charts to select elements in the graph based on the data.
  • Search for connections between nodes with the shortest path function - just select two nodes in the graph visualization and click the shortest path button in the toolbox. The shortest path is calculated in the database and new nodes and relationships are added to the graph visualization if needed.

Shortest Path

To find all shortest paths between two nodes in a graph simply select these two nodes and press the "Find the shortest path" button. All shortest paths are calculated and the user can choose which paths to add to the visualization. The paths are calculated using all data in the graph database.
View the different paths using the tabs on the left. Usually, some of the paths are similar in the sense that they have the same type of entities along the path. These paths can be grouped together using the "Group similar paths" checkbox to easily select or unselect whole groups.
Separate paths or groups can be selected or unselected. Selected paths are combined in the "Selected paths" tab. This is the resulting subgraph that will be added to the visualization. If all elements of the selected paths are already in the visualization then the layout of the existing elements is preserved, paths are selected and centered.


With the selections buttons in the toolbox and statistics charts, it's really easy to select parts of the graph based on various conditions. Just select a starting point, click on the "select neighbors" button. Notice how the statistics charts automatically show the portion of selected elements across different properties. The selection buttons can be used repeatedly to add additional layers of connected nodes to the group of selected elements.
To select or unselect elements with a particular property, just click on the value in the property statistics chart. For example, to see all virtual servers managed by all virtual managers in our dataset, start with clicking on the virtual manager property in the chart, and then select all incoming nodes.
To check what types of relationships are connecting the servers and managers in this example, go to the relationship tab. To select or unselect relationships based on their properties just click on the values.
Selections can be used with multiple starting points, simply select some nodes and use one of the selection buttons.
Inverting the selection allows selecting even more complicated patterns.
Custom selection rules can be easily plugged into the visualization using our widgets. One of the widgets, called Outage Propagation, can be used to simulate how a potential outage might spread across a network. Configuration of the widget allows specifying how many underlying nodes have to be down in order to propagate the outage to parent nodes. In our example all three nodes have to be down to propagate the outage, depicting a redundancy in the infrastructure.

Style Mapping

With Discrete Mapping you can set style values of any element in the graph visualization based on discrete mapping rules for each data value stored in a data property (either virtual or database property), e.g. "Rack" is blue, "Server" is green, etc.
  • To create any Mapper (linear or discrete) open the Mapper Editor associated with any visual property (like background color or size of nodes, relationships' width or color, etc.), select which property's values should be used in mapping, and select mapped values.

With Linear Mapping you can set style properties like color or dimensions of nodes and relationships of the graph visualization continuously based on numeric data (metrics) stored in any data property (either virtual or database property)
  • To create any Mapper (linear or discrete) open the Mapper Editor associated with any visual property (like background color or size of nodes, relationships' width or color, etc.), select which property's values should be used in the mapping (so-called data property) and select mapped values.
  • Linear Mapping is defined with two reference points which are used to calculate style values for elements using linear interpolation. These points can be set manually or you can use the "Auto" threshold which will automatically use the maximum and minimum from current data in the graph visualization.
  • When you set the thresholds manually (one of them or both) then every data value below the minimum is mapped to style value associated with the minimum threshold and every data value above the maximum is mapped to style value associated with a maximum threshold.

Import Data From a File

Quick import of graph elements from a CSV or Microsoft Excel file can be done on the Search page or directly in the visualization with the "Import file" button.
To import the file simply drag&drop it in the Import window. Select if you want to import nodes or relationships. Choose the Excel tab from which data will be imported (in case of a CSV file choose the column delimiter). Select if you want to use the names of properties from the file header. You can give your import an Import ID, this value will be stored on every imported element to allow easy lookup of the elements after the import is complete. Choose how the node labels will be created. Set the unique property, this will ensure that if there already are nodes with the same unique property in the database these nodes will be merged with the imported data instead of duplicating the nodes.
After a successful import, the next steps can be chosen, like creating a saved query for later lookup of the imported elements, visualizing the imported elements, or starting a new import with the same import ID.
Importing relationships is very similar to the additional step of matching the start and end node of the relationships using a unique identifier in your data.


Applying the right layout is crucial for a visual overview of the interdependence between nodes in graph visualization.
  • Layouts are applied to the selected part of the graph visualization or to the whole graph if nothing is selected.
  • Use mouse and keyboard shortcuts to quickly organize the graph
    • CTRL(⌘) + A : select all elements in the graph visualization
    • CTRL(⌘) + F : open the search tab in the graph visualization and set focus on the search field so you can start typing search string right away
    • CTRL(⌘) + S : save the visualization
    • CTRL(⌘) + UP_ARROW : horizontal ALIGNMENT of selected nodes
    • CTRL(⌘) + LEFT_ARROW : vertical ALIGNMENT of selected nodes
    • CTRL(⌘) + RIGHT_ARROW : equal horizontal SPACING between selected nodes
    • CTRL(⌘) + DOWN_ARROW : equal vertical SPACING between selected nodes
    • CTRL(⌘) + MOUSE_WHEEL : expand or reduce the spacing between selected nodes
    • ARROWS : move selected part of the graph in the desired direction in the graph visualization


With the statistics tab for every property, you have an immediate overview of the distribution of values in the graph visualization.
  • Try selecting out some nodes in the graph visualization, and the charts are instantly updated to show the number of selected elements for every value. This can be really helpful together with selections were you can select parts of the graph visualization in a flow-like manner and look if there is some pattern in values.
  • Groups of elements with the same property value can be selected or unselected in bulk by clicking the columns in the charts. This way you can quickly build selections of parts of the graph visualization based on data and then use them, e.g. apply a layout, custom logic (widget), or hide the selected elements to simplify the graph visualization.
  • Add charts for any property, sort, collapse, or hide them freely.
  • When you have a metric stored in some property you can switch the chart to show the histogram for 10 evenly computed intervals of data calculated between the min and max values in the graph.
  • Try showing the values on a logarithmic scale to visually point up smaller values like outliers in distributions.

Virtual Properties

There are two types of properties you can use in graph visualization. The first are properties stored in Neo4j which we call Database properties. The other ones are Virtual properties which exist only in the scope of graph visualization and represent small JavaScript calculations used for searching for patterns or creating some sort of logic on top of data stored in the database.
  • To create a Virtual property go to the Detail tab and click on "Add virtual property" > "Create new property". When you are on the detail of a node then you are creating a Virtual property for nodes and when you are on the detail of a relationship then you are creating a Virtual property for relationships.
  • In the edit window create your JavaScript formula which returns some value. You can use the predefined templates for inspiration and test your formula with the "Test formula" button.
  • Formulas defined in Virtual properties are calculated for every node in the graph visualization and the result is listed in the Detail tab.
  • Virtual properties can be used in the Statistics tab for selecting or in Style mappers for styling the graph visualization.

Data Schema

Data Schema can be used to lock particular properties and enforce formatting or Input Restrictions rules when users want to edit values in these locked properties. Data Schema is a global setting which means that any change will affect all users of the system.
  • To lock a property go to the Settings page and click on the edit button next to the DATA_SCHEMA setting. Note that all of the advanced settings on this page are edited as JSON objects.
  • Let's say we want to lock a database property "uid" and make it mandatory. To do this we need to write a Database Property Definition object (DPD) and add it to "nodeProperties"."database" part of the Data Schema JSON. In this DPD we can specify the Input Restrictions object and add "mandatory":true in order to make this property mandatory (not removable).
  • Let's say we also want to lock the "rank" property and allow users to put only some values in this property (this restriction is applied only for newly added values or when users want to change an existing value). We can achieve this by adding another DPD and specifying the values in the "values" or "groups" list. We can also set the "dataRole" to "dimension" to allow filtering on this dimension on the Search tab in the graph visualization.
  • There are more options you can use with Data Schema, please refer to the documentation or contact us if you need more information or help.

Tab query

  • Duplicate existing tab
  • Change the title of the tab
  • Add property to filter ("rank" in this case) and select which values should the query filter on (e.g. "Prince" and "Bishop"). There is logical OR between values in one property and logical AND between multiple properties (not shown in this example)
  • Run the changed query with the "Apply" button
  • You can see the number of matched nodes at the bottom of the table result.
  • We can see that there are mostly nodes with the "demon" label but also some other types of nodes. We want only this label we add it to the filter and apply changes with the "Apply" button.
  • Add the "rank" property to Columns to see the values for every node.
  • Change the position of the column by drag&drop in the Columns selector and click "Apply" to apply the changes.

Cypher query

  • Duplicate existing tab
  • Change the title of the tab
  • Change the query type to "Cypher"
  • Type your cypher query and run it with the "Apply" button
  • The result of the returned query is a JSON which can be viewed in the Cypher result viewer. Results can contain these types of elements: Nodes, Relationships, Paths, and Values.
  • Graph visualization of the result can be started only if the result contains at least one element of type Node, Relationship, or Path.
  • You can visualize the result of your cypher with the "New visualization" button or you can add found elements to opened graph visualization with the "Add to visualization" button

Search Settings

With the Search Settings, you can control the global settings of indexing and search in Graphlytic. Any change made in these settings has an immediate effect on all users in the system.
  • To open the Search Settings window click on the cogs icon next to the search bar in the toolbox. Set the Search Mode, for instance, you can select the "Manual" search mode and set the minimum length to 3. When you now try to search for some text the search can be started only with the enter key and only if the length of the search text is at least 3 characters.
  • Only indexed nodes can be searched. Set which properties should be indexed. Reindexing the database is necessary every time you make any changes to the Fulltext Index Settings. For instance, we can add some properties to Indexed properties and start to reindex with the "Start indexing" button. The status of reindexing is updated every few seconds to give you info about progress.
  • After reindexing, we can search for values from all of the indexed properties.


Raw data in CSV format (either nodes or relationships) or PNG image snapshot of the graph visualization can be exported.
  • To export data open the "Visualization" menu and choose "Export nodes (CSV) or "Export relationships (CSV)". The CSV files can be opened in any text file editor or used in other tools like Microsoft Excel, OpenOffice, LibreOffice, or similar.
  • Only selected nodes or relationships are exported (all when nothing is selected).
  • To export the image of the graph visualization open the "Visualization" menu and choose "Image export (PNG)".
  • CSV data can be exported also on the Search page. In this case, only nodes from the currently opened tab (query) are exported.

Details tab

Details about the selected node or relationship can be viewed on the Detail tab in the graph visualization. When multiple elements are selected then details about the first element are displayed.
  • On the top is the element's identification. If a node is selected then the node's title is also shown and the node's labels can be edited with the pencil icon.
  • Next are the Virtual properties of the selected node. It's possible to create and edit locally defined virtual properties or hide/show any virtual property.
  • Database properties: these are the properties stored in the graph database for the selected elements. Database properties can be edited or simply hidden from the tab (you can show them anytime with the Add database property menu).
  • Incoming nodes: here are listed all nodes from the selected node's neighborhood that have a relationship directed from the listed node to the selected node.
  • Outgoing nodes: here are listed all nodes from the selected node's neighborhood that have a relationship directed from the selected node to the listed node.
  • Incoming and outgoing nodes can be easily selected in the graph visualization with the circle icon.
  • It's possible to directly show details of incoming or outgoing nodes (to traverse in the graph visualization) by clicking on the node's snippet.

Search tab

When you need to search for a particular node or filter out a set of nodes based on their data you can use the Search tab in the graph visualization.
  • Search directly in data using the search box. The search looks into properties defined on the Settings tab in the Title and Snippets controls.
  • Use the Advanced filter to filter out nodes using multiple filtering criteria. There is a logical OR between values selected in one property and a logical AND between properties. This is helpful for filtering out nodes from the graph visualization based on categories of data. Please note that only properties defined in Data Schema with dataRole set to "dimension" are available in the Advanced filter.
  • Use the Select or Unselect buttons to quickly add or remove currently filtered out nodes from/to selected nodes.
  • Select or unselect nodes in the graph visualization by clicking on the icon of the node snippet in the list or look into details of a node by clicking on the node snippet itself.

Users and Groups

For managing users and groups in the system go either to the Users page or Groups page.
  • To create a new user go to the Users page, click on the Create new user button, fill out mandatory fields, and click Create. You can also choose if the user is Enabled right after creating or if the should be disabled for now.
  • User action buttons: with the management buttons you can enable or disable a user's access to the system, modify the user's name, change password, add or remove a user to or from a group or delete the user.
  • To create a new group of users go to the Groups page, click on the Create group button, fill out mandatory fields, and click create. Here you can also set the group's application permissions which determines what can a member of this group does in the system. Please read more about the permissions in the documentation.
  • Group action buttons: with the management buttons you can edit a group's name, description, or permissions, assign users to the group or delete the group.

Data Security

Graphlytic's Data Security layer allows the administrator to select Permissions to data in the graph for user groups. Here is a basic example:
  • We have the user "new.user" who is in groups "new.group" and "other.group". Both groups do not have the "Read all data" permission which means every request from this user goes through the Data Security layer. Note that user without the "Read all data" permission has some other restrictions also, e.g. he can't create and run custom cypher queries on the Search page.
  • When we want to restrict this user from accessing some data in the graph visualization we can do so on the Data Security page. There are two levels of data restrictions. Entity security can be used to restrict access to particular nodes and relationships (cypher conditions are used for this) and Property security which is used to restrict access to particular properties (properties are listed either in enabled or disabled lists).
  • Let's say we restrict the group new.group to access only nodes with the label "demon" and we restrict the other.group to access only nodes with the label "angel". The result is that new.user can access both types of nodes because his effective permissions are calculated with logical OR between permissions of groups he is part of. The final effective restrictions for every user can be seen in the Data permissions of users table at the bottom of the Data Security page.
  • We also want to restrict the new.group to access only the "uid" and "identifier" properties. We can do so with the Property security list. The result is that new.user has access to all properties because he is also a member of the other.group which is not restricted. When we add the property restriction to the other.group (let's say we enable access to the "identifier" property and disable access to the "uid" property) than new.user is finally restricted and can access only the "identifier" property.
Do you want to see the application yourself?
Try Online Demo